initial commit, docker playbook

This commit is contained in:
simon 2022-04-19 21:40:54 +07:00
commit 3e65d1ae07
Signed by: simon
GPG Key ID: 2C15AA5E89985DD4
8 changed files with 225 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
# secret vars
vars.yml

21
README.md Normal file
View File

@ -0,0 +1,21 @@
# Ansible Playbooks
A collection of Ansible playbooks I use to provision things.
## Ansible Docker Ubuntu
Ansible playbook to provision an standart Ubuntu LTS server VM.
- update and upgrade repo packages
- install basic necessities
- install `docker`
- install `docker compose`
- copy frequently used config files
### Setup
Copy or rename `vars.samle.yml` to `vars.yml` and set:
- **regular_user**: Default username
### Run on a single host
```
ansible-playbook -i $hostname, -K ansible-docker-ubuntu/playbook.yml
```

View File

@ -0,0 +1,12 @@
---
- name: install basic docker environment
hosts: all
gather_facts: true
vars_files:
- vars.yml
roles:
- basic
- docker
- docker-compose
- userconf

View File

@ -0,0 +1,53 @@
---
- block:
- name: "update cache"
apt:
update_cache: yes
cache_valid_time: 3600
- name: "upgrade all"
apt:
name: "*"
state: latest
register: upgraded
- name: "install basic packages"
apt:
name: "{{ packages }}"
state: present
vars:
packages:
- bmon
- build-essential
- curl
- htop
- iftop
- iotop
- mediainfo
- mlocate
- ranger
- rsync
- tmux
- trash-cli
- tree
- unzip
- vim
- whois
- zip
- zsh
- name: autoremove
apt:
autoremove: yes
- name: autoclean cache
apt:
autoclean: yes
- name: reboot the server
reboot:
when: upgraded is changed
become: true
become_user: root

View File

@ -0,0 +1,38 @@
---
- block:
- name: "get newest release"
uri:
url: https://api.github.com/repos/docker/compose/releases/latest
return_content: true
register: json_reponse
- name: "get os"
command: uname -s
register: os
- name: "get arch"
command: uname -m
register: arch
- name: "create cli-plugins folder"
file:
path: /usr/local/lib/docker/cli-plugins
state: directory
- name: "download latest docker-compose"
get_url:
url: "https://github.com/docker/compose/releases/download/{{ json_reponse.json.tag_name }}/docker-compose-{{ os.stdout }}-{{ arch.stdout }}"
dest: /usr/local/lib/docker/cli-plugins/docker-compose
mode: '755'
- name: "get arch"
command: docker compose version
register: compose
- name: "latest docker-compose version"
debug:
msg: "installed docker compose version: {{ compose.stdout }}"
become: true
become_user: root

View File

@ -0,0 +1,57 @@
---
- block:
- name: "install docker dependencies"
apt:
name: "{{ packages }}"
state: present
vars:
packages:
- ca-certificates
- curl
- gnupg
- lsb-release
- name: "add docker pgp key"
apt_key:
state: present
url: https://download.docker.com/linux/ubuntu/gpg
- name: "get release"
command: lsb_release -cs
register: release
- name: add docker repository to apt
apt_repository:
repo: deb https://download.docker.com/linux/ubuntu {{ release.stdout }} stable
state: present
- name: "install docker dependencies"
apt:
update_cache: yes
name: "{{ packages }}"
state: present
vars:
packages:
- docker-ce
- docker-ce-cli
- containerd.io
- name: "ensure docker group exists"
group:
name: docker
state: present
- name: "add user to group"
user:
name: "{{ regular_user }}"
groups: docker
append: yes
- name: "start docker if needed"
service:
name: docker
state: started
become: true
become_user: root

View File

@ -0,0 +1,39 @@
---
- name: "create user folders"
file:
path: "{{ item }}"
state: directory
loop:
- bin
- docker
- docker
- logs
- script
- name: "add ignore"
lineinfile:
create: true
path: .gitignore
line: .cfg
- name: "clone zsh theme"
become: true
git:
repo: https://github.com/romkatv/powerlevel10k.git
dest: /usr/share/zsh-theme-powerlevel10k
- name: "clone dotfiles"
git:
repo: https://git.oikeo-projects.com/simon/dotfiles.git
dest: .cfg
bare: true
- name: "checkout dotfiles"
shell: git --git-dir=.cfg --work-tree=$HOME checkout
- name: change user shell to zsh
become: true
user:
name: "{{ regular_user }}"
shell: /bin/zsh

View File

@ -0,0 +1,3 @@
---
regular_user: username