You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hetzner-ansible/roles/common/tasks/main.yml

234 lines
5.2 KiB
YAML

---
### tags:
### users
### install
### config
### root_authorized_keys
- name: "Set hostname to <{{ inventory_hostname }}>"
hostname:
name: "{{ inventory_hostname }}"
- name: "Setting hosts configuration in /etc/hosts"
blockinfile:
marker: "# {mark} managed by ansible (hosts config for {{ inventory_hostname }})"
path: "/etc/hosts"
state: present
create: yes
block: |
{% for host in shared_service_hosts %}
{{ host.ip }} {{ host.name }}
{% endfor %}
- name: "Adding authorized keys for root"
ansible.posix.authorized_key:
user: root
state: present
key: "{{ lookup('file', 'users/' + item + '/ssh.pub') }}"
loop: '{{ smardigo_plattform_users }}'
tags:
- never
- root_authorized_keys
- name: "Removing outdated authorized keys for root"
ansible.posix.authorized_key:
user: root
state: absent
key: "{{ lookup('file', 'users/outdated/' + item.path) }}"
with_filetree: "users/outdated"
tags:
- never
- root_authorized_keys
- name: "Read current users"
shell: "getent passwd | awk -F: '$3 > 999 {print $1}'"
register: current_users
changed_when: false
tags:
- users
- name: "Remove outdated users"
user: name={{item}} state=absent remove=yes
with_items: "{{ current_users.stdout_lines }}"
when: not ((item in default_plattform_users) or (item in smardigo_plattform_users))
tags:
- users
- name: "Create users"
user:
name: '{{ item }}'
groups: '{{ sudo_group }}'
shell: '/bin/bash'
state: present
append: yes
loop: '{{ smardigo_plattform_users }}'
loop_control:
index_var: index
tags:
- users
# TODO check usage of key_options "no-agent-forwarding, no-agent-forwarding, no-X11-forwarding"
- name: "Set up authorized users"
ansible.posix.authorized_key:
user: '{{ item }}'
state: present
exclusive: true
key: "{{ lookup('file', '{{ playbook_dir }}/users/{{ item }}/ssh.pub') }}"
loop: '{{ smardigo_plattform_users | difference(["elastic"]) }}'
tags:
- users
- name: "Ensure docker configuration directory exists"
file:
path: '/home/{{ item }}/.docker/'
state: directory
owner: '{{ item }}'
group: '{{ item }}'
loop: '{{ smardigo_plattform_users }}'
when: docker_enabled
tags:
- users
- name: "Insert/Update docker configuration"
template:
src: 'configs/docker/config.json.j2'
dest: '/home/{{ item }}/.docker/config.json'
owner: '{{ item }}'
group: '{{ item }}'
mode: 0600
loop: '{{ smardigo_plattform_users }}'
when: docker_enabled
tags:
- users
- config
- name: "Install common dependencies"
apt:
name: [
'mc',
'vim',
'zip',
'curl',
'htop',
'net-tools',
'bash-completion',
]
state: 'present'
when: ansible_distribution == "Ubuntu"
tags:
- install
- name: "Download docker bash completion"
get_url:
url: https://raw.githubusercontent.com/docker/cli/v20.10.6/contrib/completion/bash/docker
dest: /etc/bash_completion.d/docker
mode: '644'
when: docker_enabled
tags:
- install
- name: "Download docker-compose bash completion"
get_url:
url: "https://raw.githubusercontent.com/docker/compose/{{ docker_compose_version }}/contrib/completion/bash/docker-compose"
dest: "/etc/bash_completion.d/docker-compose"
mode: '644'
when: docker_enabled
tags:
- install
- name: "Upgrade all packages"
apt:
name: '*'
state: latest
tags:
- install
when: ansible_distribution == "Ubuntu"
- name: "Ensure docker configuration directory exists"
file:
path: '/root/.docker/'
state: directory
owner: 'root'
group: 'root'
when: docker_enabled
tags:
- config
- name: "Insert/Update docker configuration"
template:
src: 'configs/docker/config.json.j2'
dest: '/root/.docker/config.json'
owner: 'root'
group: 'root'
mode: 0600
when: docker_enabled
tags:
- config
- name: "Ensure docker daemon configuration directory exists"
file:
path: '/etc/docker'
state: directory
owner: 'root'
group: 'root'
when: docker_enabled
tags:
- config
- name: "Ensure docker daemon configuration directory exists"
file:
path: '/etc/docker'
state: directory
owner: 'root'
group: 'root'
when: docker_enabled
tags:
- config
- name: "Insert/Update docker daemon configuration"
template:
src: 'configs/docker/daemon.json.j2'
dest: '/etc/docker/daemon.json'
owner: 'root'
group: 'root'
mode: 0600
when: docker_enabled
tags:
- config
- name: "Check docker networks"
include_role:
name: _docker
tasks_from: networks
- name: sshd configuration file update
template:
src: 'configs/sshd/sshd_config.j2'
dest: '/etc/ssh/sshd_config.new'
owner: 'root'
group: 'root'
mode: 0644
notify:
- restart ssh
# elasticsearch production mode requirements
- name: "Set vm.max_map_count"
sysctl:
name: vm.max_map_count
value: '262144'
sysctl_set: yes
state: present
tags:
- config
# elasticsearch production mode requirements
- name: "Set fs.file-max"
sysctl:
name: fs.file-max
value: '65536'
sysctl_set: yes
state: present
tags:
- config