Skip to content

Commit

Permalink
Update Ansible predeployment
Browse files Browse the repository at this point in the history
  • Loading branch information
Xavier2p committed Sep 11, 2023
1 parent c724c2f commit 0d0ce79
Show file tree
Hide file tree
Showing 8 changed files with 89 additions and 131 deletions.
2 changes: 1 addition & 1 deletion .github/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ git clone https://github.com/Xavier2p/infra-as-code.git && cd infra-as-code
### #2 Pre-deploy configuration (using Ansible)

```bash
# coming soon...
ansible-playbook -i ansible/hosts.yml -u <USER> -b ansible/playbook.yml
```

### #3 Deploy infrastructure (using Terraform)
Expand Down
File renamed without changes.
10 changes: 0 additions & 10 deletions ansible/clone-repo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
- name: Clone Configuration Repositories
hosts: all
become: true

tasks:
- name: Clone Homepage Configuration Files
ansible.builtin.git:
Expand All @@ -12,12 +11,3 @@
clone: true
update: true
force: true

- name: Clone Infra As Code Configuration Files
ansible.builtin.git:
repo: https://github.com/Xavier2p/infra-as-code.git
dest: /infra
version: main
clone: true
update: true
force: true
2 changes: 2 additions & 0 deletions ansible/hosts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@ all:
children:
scariff:
hosts: 192.168.1.71
eadu:
hosts: 192.168.64.5
30 changes: 10 additions & 20 deletions ansible/init-hosts.yml
Original file line number Diff line number Diff line change
@@ -1,26 +1,16 @@
---
- name: Initial Config for Hosts
- name: Create Folders for Configuration
hosts: all
become: true

tasks:
- name: Create Root Docker Folder
ansible.builtin.file:
path: /docker
state: directory
mode: '0757'
recurse: true
owner: sysadmin
group: sysadmin

- name: Create Infra Folder
ansible.builtin.file:
path: /infra
state: directory
mode: '0757'
recurse: true
owner: sysadmin
group: sysadmin
owner: '{{ ansible_user }}'
group: '{{ ansible_user }}'

- name: Create tree in it
ansible.builtin.file:
Expand All @@ -30,12 +20,11 @@
loop:
- uptime-kuma
- traefik
- portainer
# - portainer
- homepage
- adguard
- homer
- dozzle
- code-server
# - code-server
- grafana
- prometheus
# - jellyfin
Expand All @@ -47,8 +36,9 @@
- name: Assign good right to Traefik
ansible.builtin.file:
path: /docker/traefik/acme.json
owner: sysadmin
group: sysadmin
state: touch
owner: '{{ ansible_user }}'
group: '{{ ansible_user }}'
mode: '0600'

- name: Create Downloads Folder
Expand All @@ -57,8 +47,8 @@
state: directory
mode: '0757'
recurse: true
owner: sysadmin
group: sysadmin
owner: '{{ ansible_user }}'
group: '{{ ansible_user }}'

- name: Create tree in it
ansible.builtin.file:
Expand Down
83 changes: 46 additions & 37 deletions ansible/install-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,40 +4,49 @@
become: true

tasks:
- name: Update apt cache
ansible.builtin.apt:
update_cache: true

- name: Download Docker Install Script
ansible.builtin.get_url:
url: https://get.docker.com/
dest: /tmp/install-docker.sh
mode: '755'

- name: Run Install Script
ansible.builtin.shell: /tmp/install-docker.sh

- name: Create Docker Service
ansible.builtin.file:
path: /etc/systemd/system/docker.service.d
state: directory
mode: '0755'

- name: Create Docker Service Override
ansible.builtin.copy:
dest: /etc/systemd/system/docker.service.d/startup_options.conf
content: |
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://{{ ansible_default_ipv4.address }}:2375 -H unix:///var/run/docker.sock
mode: '0644'

- name: Reload Systemd
ansible.builtin.systemd:
daemon_reload: true

- name: Start Docker
ansible.builtin.service:
name: docker
state: restarted
enabled: true
- name: Update apt cache
ansible.builtin.apt:
update_cache: true

- name: Download Docker Install Script
ansible.builtin.get_url:
url: https://get.docker.com/
dest: /tmp/install-docker.sh
mode: '755'

- name: Run Install Script
ansible.builtin.shell:
args:
cmd: /tmp/install-docker.sh
creates: /usr/bin/docker

- name: Create Docker Service
ansible.builtin.file:
path: /etc/systemd/system/docker.service.d
state: directory
mode: '0755'

- name: Create Docker Service Override
ansible.builtin.copy:
dest: /etc/systemd/system/docker.service.d/startup_options.conf
content: |
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://{{ ansible_default_ipv4.address }}:2375 -H unix:///var/run/docker.sock
mode: '0644'

- name: Reload Systemd
ansible.builtin.systemd:
daemon_reload: true

- name: Restart Docker
ansible.builtin.service:
name: docker
state: restarted
enabled: true

- name: Add user to Docker group
ansible.builtin.user:
name: '{{ ansible_user }}'
groups: docker
append: true
71 changes: 8 additions & 63 deletions ansible/playbook.yml
Original file line number Diff line number Diff line change
@@ -1,67 +1,12 @@
---
- name: Install Raspberry Pi
hosts: all
become: true
- name: Prepare environment
ansible.builtin.import_playbook: preprocess.yml

tasks:
# Updates the repository cache
- name: Update
ansible.builtin.apt:
update_cache: true
- name: Install Docker Playbook
ansible.builtin.import_playbook: install-docker.yml

# Upgrades all packages
- name: Upgrade
ansible.builtin.apt:
upgrade: dist
- name: Init Hosts Playbook
ansible.builtin.import_playbook: init-hosts.yml

# Installs the required packages for Docker
- name: Install APT packages
ansible.builtin.apt:
name:
- apt-transport-https
- ca-certificates
- lsb-release
- gnupg
- zsh
- vim
state: latest
update_cache: true

# Gets the Docker signing key
- name: Add signing key - Docker
ansible.builtin.apt_key:
url: 'https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg'
state: present

# Adds the Docker repository to the sources list
- name: Add repository into sources list - Docker
ansible.builtin.apt_repository:
repo: 'deb [arch={{ ansible_architecture }}] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} stable'
state: present
filename: docker

# Installs Docker
- name: Install Docker
ansible.builtin.apt:
name:
- docker
- docker.io
- docker-compose
- docker-registry
state: latest
update_cache: true

# Downloads the binary for Terraform
- name: Download Terraform
ansible.builtin.get_url:
url: 'https://releases.hashicorp.com/terraform/1.4.6/terraform_1.4.6_linux_arm64.zip'
dest: /tmp/terraform.zip
mode: '0755'

# Unzips the Terraform binary to the bin directory
- name: Unzip Terraform
ansible.builtin.unarchive:
src: /tmp/terraform.zip
dest: /usr/local/bin
remote_src: true
mode: '0755'
- name: Retrieve Configuration Files
ansible.builtin.import_playbook: clone-repo.yml
22 changes: 22 additions & 0 deletions ansible/preprocess.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
- name: Prepare the environment
hosts: all
become: true
tasks:
# Updates the repository cache
- name: Update
ansible.builtin.apt:
update_cache: true

# Upgrades all packages
# - name: Upgrade
# ansible.builtin.apt:
# upgrade: dist

# Installs the packages
- name: Install packages
ansible.builtin.apt:
name: '{{ item }}'
state: present
loop:
- htop

0 comments on commit 0d0ce79

Please sign in to comment.