diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..c0a89bc --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +# http://editorconfig.org + +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.yml] +indent_size = 2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md index ee6fbb4..f30147b 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,12 @@ -# ansible +### Ansible +## Requirements +- Git + +## Installation +```shell script +sudo apt install git +git clone https://gitea.fedy95.com/experimental/ansible.git +cd ansible +./install.sh +``` diff --git a/ansible-desktop.yml b/ansible-desktop.yml new file mode 100644 index 0000000..afedb1f --- /dev/null +++ b/ansible-desktop.yml @@ -0,0 +1,8 @@ +--- + +- name: Base playbook + hosts: localhost + roles: + - { role: common, become: true } + - { role: docker, become: true } + - { role: firefox, become: true } diff --git a/ansible.cfg b/ansible.cfg new file mode 100644 index 0000000..f89b190 --- /dev/null +++ b/ansible.cfg @@ -0,0 +1,6 @@ +[defaults] +hostfile = hosts +nocows = 1 + +[privilege_escalation] +become_method = sudo diff --git a/compile-default-vars.sh b/compile-default-vars.sh new file mode 100755 index 0000000..14322b9 --- /dev/null +++ b/compile-default-vars.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +cat \ + <(echo -e "---\n") \ + <(cat roles/*/defaults/main.yml | grep -v '^---$' | grep -v '^[[:space:]]*$') \ + > group_vars/_compiled_defaults.yml diff --git a/group_vars/all.yml b/group_vars/all.yml new file mode 100644 index 0000000..d98fcdc --- /dev/null +++ b/group_vars/all.yml @@ -0,0 +1,6 @@ +--- + +# http://docs.ansible.com/ansible/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable +aptcachetime: 3600 +locale: "en_US.UTF-8" +timezone: "Europe/Moscow" diff --git a/hosts b/hosts new file mode 100644 index 0000000..88079b3 --- /dev/null +++ b/hosts @@ -0,0 +1,2 @@ +[local] +localhost ansible_connection=local diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..b428951 --- /dev/null +++ b/install.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +################### +# Install ansible # +if ! grep -q "ansible/ansible" /etc/apt/sources.list /etc/apt/sources.list.d/*; then + echo "Adding Ansible PPA" + sudo apt-add-repository ppa:ansible/ansible -y +fi + +if ! hash ansible >/dev/null 2>&1; then + echo "Installing Ansible..." + sudo apt-get update + sudo apt-get install software-properties-common ansible git python-apt -y +else + echo "Ansible already installed" +fi + +##################################### +# Display real installation process # +echo "" +echo "Customize the playbook ansible-desktop.yml to suit your needs, then run ansible with :" +echo " ansible-playbook ansible-desktop.yml --ask-become-pass" +echo "" diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml new file mode 100644 index 0000000..f49c0d5 --- /dev/null +++ b/roles/common/tasks/main.yml @@ -0,0 +1,26 @@ +--- + +- name: Ensure the system can use the HTTPS transport for APT + stat: path=/usr/lib/apt/methods/https + register: apt_https_transport + +- name: Install HTTPS transport for APT + apt: pkg=apt-transport-https state=installed + when: not apt_https_transport.stat.exists + +- name: Enable all repositories in sources.list + replace: dest=/etc/apt/sources.list regexp='^#\s?deb(.+)http://(.+)/ubuntu(.+)$' replace='deb\1http://\2/ubuntu\3' backup=yes + +- name: Ensure that Aptitude repositories are up to date + apt: update_cache=yes cache_valid_time={{ aptcachetime }} + +- name: Install common packages + apt: pkg={{ item }} state=latest update_cache=yes cache_valid_time={{ aptcachetime }} + with_items: + - git + - make + - nano + - net-tools + +- name: Upgrade installed packages + apt: upgrade=yes diff --git a/roles/docker/defaults/main.yml b/roles/docker/defaults/main.yml new file mode 100644 index 0000000..6150035 --- /dev/null +++ b/roles/docker/defaults/main.yml @@ -0,0 +1,5 @@ +--- + +docker: + start: false + service_enabled: no diff --git a/roles/docker/handlers/main.yml b/roles/docker/handlers/main.yml new file mode 100644 index 0000000..e070c2c --- /dev/null +++ b/roles/docker/handlers/main.yml @@ -0,0 +1,4 @@ +--- + +- name: Restart Docker + service: name=docker state=restarted diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml new file mode 100644 index 0000000..ab42d48 --- /dev/null +++ b/roles/docker/tasks/main.yml @@ -0,0 +1,29 @@ +--- + +- name: Installing apt-key + apt_key: id="F76221572C52609D" url=https://apt.dockerproject.org/gpg state=present + +- name: Add deb repository + apt_repository: repo='deb https://apt.dockerproject.org/repo ubuntu-{{ ansible_distribution_release }} main' state=present + +- name: Install + apt: pkg="{{ item }}" state=latest update_cache=yes + with_items: + - linux-image-extra-virtual + - docker-engine + +- name: Create Docker group + group: name=docker state=present + +- name: Add current user to Docker group + user: name="{{ ansible_env.USER }}" groups=docker append=yes + +- name: "Ensure Docker is {{ docker.start | ternary('started','stopped') }}" + service: name=docker state={{ docker.start | ternary('restarted','stopped') }} enabled={{ docker.service_enabled }} + +- name: Install docker-compose + get_url: + url: https://github.com/docker/compose/releases/download/1.27.4/docker-compose-Linux-x86_64 + dest: /usr/local/bin/docker-compose + force: no + mode: 0755 diff --git a/roles/firefox/tasks/main.yml b/roles/firefox/tasks/main.yml new file mode 100644 index 0000000..91c4394 --- /dev/null +++ b/roles/firefox/tasks/main.yml @@ -0,0 +1,4 @@ +--- + +- name: Install Firefox + apt: pkg=firefox state=latest update_cache=yes cache_valid_time={{ aptcachetime }}