diff options
| author | Romain Gonçalves <me@rgoncalves.se> | 2021-05-03 20:21:31 +0200 | 
|---|---|---|
| committer | Romain Gonçalves <me@rgoncalves.se> | 2021-05-03 20:21:31 +0200 | 
| commit | 5d07c5c3ea19bf03232ab6c90c3176f1ab0388f2 (patch) | |
| tree | 4e992c28bb8114ac9cbb412146f5fbcf1b42ddb1 /roles/_workstation | |
| parent | 2a4483132d4fea880c19283c9fadfe1e4e3a1b06 (diff) | |
| download | infrastructure-5d07c5c3ea19bf03232ab6c90c3176f1ab0388f2.tar.gz | |
sshdns: Refactor role for _workstation only
Diffstat (limited to 'roles/_workstation')
| -rw-r--r-- | roles/_workstation/env/tasks/main.yml | 12 | ||||
| -rw-r--r-- | roles/_workstation/sshdns/defaults/main.yml | 3 | ||||
| -rw-r--r-- | roles/_workstation/sshdns/tasks/main.yml | 17 | ||||
| -rw-r--r-- | roles/_workstation/sshdns/templates/sshdns.j2 | 20 | ||||
| -rw-r--r-- | roles/_workstation/sysconf/tasks/_void.yml | 2 | ||||
| -rw-r--r-- | roles/_workstation/sysconf/tasks/main.yml | 8 | 
6 files changed, 55 insertions, 7 deletions
diff --git a/roles/_workstation/env/tasks/main.yml b/roles/_workstation/env/tasks/main.yml index 3c54210..261170e 100644 --- a/roles/_workstation/env/tasks/main.yml +++ b/roles/_workstation/env/tasks/main.yml @@ -8,9 +8,17 @@    stat: path=/usr/bin/doas     register: _workstation_env_become +- name: retrieve existing users +  shell: cat /etc/passwd | cut -d ":" -f 1 +  register: result + +- name: check if target user exists +  fail: +    msg: _ws_user is not a valid user +  when: _ws_user not in result.stdout_lines +  - name: retrieve host facts    set_fact:      #ansible_become_method: "{{ 'doas' if _workstation_env_become.stat.exists else 'sudo' }}"      ansible_become_method: "su" -    ansible_become_user: "{{ _workstation_env_user }}" - +    ansible_become_user: "{{ _ws_user }}" diff --git a/roles/_workstation/sshdns/defaults/main.yml b/roles/_workstation/sshdns/defaults/main.yml new file mode 100644 index 0000000..9427f1d --- /dev/null +++ b/roles/_workstation/sshdns/defaults/main.yml @@ -0,0 +1,3 @@ +--- + +sshdns_waittime: 2 diff --git a/roles/_workstation/sshdns/tasks/main.yml b/roles/_workstation/sshdns/tasks/main.yml new file mode 100644 index 0000000..daf8f61 --- /dev/null +++ b/roles/_workstation/sshdns/tasks/main.yml @@ -0,0 +1,17 @@ +--- + +- name: create config directory +  file: +    path: '/home/{{ _ws_user }}/.ssh/config.d' +    state: directory +    group: '{{ _ws_user }}' +    owner: '{{ _ws_user }}' +    mode: '0700' + +- name: generate template to localhost +  template: +    src: templates/sshdns.j2 +    dest: '/home/{{ _ws_user }}//.ssh/config.d/ssh_dns' +    owner: '{{ _ws_user }}' +    group: '{{ _ws_user }}' +    mode: '0600' diff --git a/roles/_workstation/sshdns/templates/sshdns.j2 b/roles/_workstation/sshdns/templates/sshdns.j2 new file mode 100644 index 0000000..1778215 --- /dev/null +++ b/roles/_workstation/sshdns/templates/sshdns.j2 @@ -0,0 +1,20 @@ +{% import 'macros.j2' as macros with context %} + +# ssh configuration for dns ~~ ~/.ssh/.config.d/ +# managed by Ansible + +{% set dcontroller = hostvars[global.dcontroller] %} +{% call(h) macros.loop_hosts("servers") %} +{% if h.ip is defined and h.services is defined %} +{% set _port = h.services | selectattr("name", "equalto", "ssh") | map(attribute="port") | list | join(' ') %} +# {{ h.ansible_host }} +Match originalhost {{ h.ansible_host }} exec "ping -c 1 -w {{ sshdns_waittime }} {{ dcontroller.ip.in }} && ! ping -c 1 -w {{ sshdns_waittime }} {{ h.ip.out }}" +	HostName {{ h.ip.in }} +	Port {{ _port }} +Match originalhost {{ h.ansible_host }} +	HostName {{ h.ip.out }} +	Port {{ _port }} +	User root + +{% endif %} +{% endcall %} diff --git a/roles/_workstation/sysconf/tasks/_void.yml b/roles/_workstation/sysconf/tasks/_void.yml index e05e2ef..1337cfa 100644 --- a/roles/_workstation/sysconf/tasks/_void.yml +++ b/roles/_workstation/sysconf/tasks/_void.yml @@ -12,7 +12,7 @@  - name: append current user to system groups    user: -    name: "{{ _workstation_env_user }}" +    name: "{{ _ws_user }}"      groups: "{{ item }}"      append: true    loop: diff --git a/roles/_workstation/sysconf/tasks/main.yml b/roles/_workstation/sysconf/tasks/main.yml index 253cacd..e3f14aa 100644 --- a/roles/_workstation/sysconf/tasks/main.yml +++ b/roles/_workstation/sysconf/tasks/main.yml @@ -11,8 +11,8 @@  - name: generate doas configuration    lineinfile:      path: /etc/doas.conf -    regexp: "^permit persist keepenv {{ _workstation_env_user }} as root" -    line: "permit persist keepenv {{ _workstation_env_user }} as root" +    regexp: "^permit persist keepenv {{ _ws_user }} as root" +    line: "permit persist keepenv {{ _ws_user }} as root"      owner: root      mode: 0644      create: true @@ -20,8 +20,8 @@  - name: allow reboot/shutdown/hibernate with doas    lineinfile:      path: /etc/doas.conf -    regexp: "^permit nopass {{ _workstation_env_user }} as root cmd {{ item }}" -    line: "permit nopass {{ _workstation_env_user }} as root cmd {{ item }}" +    regexp: "^permit nopass {{ _ws_user }} as root cmd {{ item }}" +    line: "permit nopass {{ _ws_user }} as root cmd {{ item }}"    loop:      - zzz      - ZZZ  |