ops/playbooks/server/build.yml

157 lines
3.7 KiB
YAML

---
- name: server initial command
hosts: 'new'
become: yes
become_method: sudo
become_user: root
vars_files:
- var/registry.yml
tasks:
- name: set hosts file
copy:
src: hosts
dest: /etc/hosts
mode: '0644'
- name: set shecan dns
copy:
src: ../dns/resolv.conf
dest: /etc/resolv.conf
owner: root
group: root
mode: u=rwx,g=rwx,o=rwx
- name: disable ufw
shell: ufw disable
- name: disable swap
shell: swapoff -a
- name: sid swap off in fstab
shell: sed -i '/swap/d' /etc/fstab
- name: set timezone
shell: timedatectl set-timezone Asia/Tehran
- name: apt-get update
apt: update_cache=yes force_apt_get=yes cache_valid_time=3600
- name: add docker key and add docker repo
shell: |
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
- name: installing docker dependencies
apt:
name: "{{item}}"
state: present
update_cache: yes
with_items:
- ca-certificates
- curl
- gnupg
- lsb-release
- name: installing docker-ce and docker-ce-cli and
apt:
name: "{{item}}"
state: present
update_cache: yes
with_items:
- docker-ce
- docker-ce-cli
- containerd.io
- name: start and enable docker and containerd
service:
name: "{{item}}"
state: started
enabled: yes
with_items:
- docker
- containerd
- name: create the docker user account
user: name=dockerman append=yes state=present createhome=yes shell=/bin/bash
- name: allow 'dockerman' to use sudo without needing a password
lineinfile:
dest: /etc/sudoers
line: 'dockerman ALL=(ALL) NOPASSWD: ALL'
validate: 'visudo -cf %s'
- name: add user to docker group
user:
name: dockerman
groups: docker
state: present
- name: reset and enable docker
shell: |
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
- name: Get active primary interface name
shell: ip route | awk '/default/ { print $5 }'
register: interface
- name: Get active primary interface IP
shell: ip -o -4 addr show dev {{ interface.stdout_lines[0] }} | awk '{print $4}' | cut -d/ -f1
register: ip_address
# add docker home to enviroment variable
- name: add docker home to enviroment variable
shell: echo "export HOST_IP={{ ip_address.stdout_lines[0] }}" >> /home/dockerman/.bashrc
- name: add docker home to enviroment variable
shell: echo "export INT_NAME={{ interface.stdout_lines[0] }}" >> /home/dockerman/.bashrc
- name: nfs common
when: inventory_hostname in groups['workers']
apt:
name: nfs-common
state: present
update_cache: yes
- name: login docker
become: dockerman
shell: docker login -u {{ registry_user }} -p {{ registry_password }} {{ registry_url }}
- name: add enviroments to all servers
shell: |
echo "export ADMIN_USER=nerdguy" >> /etc/environment
echo "export ADMIN_PASSWORD=RbBmIu1LCgIqKcMmopc1Ie21+1OKsX1ktNCAeiViNIb6HAKkzjJ+GhZlLysItwgm" >> /etc/environment
- name: reboot
shell: reboot
ignore_errors: yes