diff --git a/README.md b/README.md index 6c48fce..7a90ad8 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,16 @@ How to run this Ansible playbook pip install -r requirements.txt ``` +3. Launch the ansible playbook + +```bash +ansible-playbook playbook.yml +``` + +Continuous Integration / Delivery +--------------------------------- + +TODO: travis ? Testing ------- diff --git a/host_vars/europython.yml b/host_vars/europython.yml index 78b7d71..3895612 100644 --- a/host_vars/europython.yml +++ b/host_vars/europython.yml @@ -12,7 +12,5 @@ bin_dir: '{{ home_dir }}/bin' config_dir_basename: "config" env_dir_basename: "envfile" -dockers_files_dir: '{{ install_dir }}/dockerfile' -dockers_volumes_dir: '{{ install_dir }}/volume' -dockers_config_dir: '{{ install_dir }}/{{ config_dir_basename }}' -dockers_env_dir: '{{ install_dir }}/{{ env_dir_basename }}' +dockers_files_dir: "{{ install_dir }}/docker" +docker_configuration_repo: "git://github.com/matrixise/europython-config-the-revenant.git" diff --git a/hosts.yml b/hosts.yml deleted file mode 100644 index ed97d53..0000000 --- a/hosts.yml +++ /dev/null @@ -1 +0,0 @@ ---- diff --git a/playbook.yml b/playbook.yml index 8918157..1f07de6 100644 --- a/playbook.yml +++ b/playbook.yml @@ -6,5 +6,5 @@ roles: - { role: common, become: yes, become_method: sudo, tags: common } - { role: python, become: yes, become_method: sudo, tags: python } - - { role: docker-compose, tags: docker_compose } + - { role: docker-apps, tags: docker_apps } - { role: chatbot, tags: chatbot } diff --git a/roles/common/defaults/main.yml b/roles/common/defaults/main.yml index 5a5928f..cffec6a 100644 --- a/roles/common/defaults/main.yml +++ b/roles/common/defaults/main.yml @@ -1,3 +1,4 @@ --- -root_privileges_present: true +ssh_keys: [] +github_users: [] diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml index 0b11159..1074978 100644 --- a/roles/common/tasks/main.yml +++ b/roles/common/tasks/main.yml @@ -1,31 +1,58 @@ --- -- name: prepare | Create directories - file: - path: '{{ item }}' - state: directory - owner: '{{ user }}' - group: '{{ group }}' +- name: Install aptitude + become: true + apt: + pkg: aptitude + state: latest + +- name: Install base packages + apt: + pkg: "{{ item }}" + state: latest with_items: - - '{{ tmp_install_dir }}' - - '{{ bin_dir }}' - - '{{ install_dir }}' + - locales + - tzdata + - build-essential + - curl + - git + - vim + - ntp + - ntpdate + - htop + - bash-completion + - ufw + - sudo + - apt-transport-https + - ca-certificates + - software-properties-common -- name: Update apt repositories cache +- name: Update apt cache apt: update_cache: yes cache_valid_time: 3600 - tags: always -- name: Install dependencies +- name: Upgrade packages apt: - name: '{{ packages }}' - update_cache: yes - cache_valid_time: 3600 - vars: - packages: - - language-pack-en - - build-essential - - python3 - - python3-dev - - python3-pip + upgrade: yes + +- name: Create /root/.ssh directory + become: true + file: + path: "{{ item }}" + state: directory + with_items: + - /root/.ssh + - /etc/ssh + +- name: Set github authorized keys + authorized_key: + key: "https://github.com/{{ item }}.keys" + user: root + with_items: "{{ github_users }}" + +- name: Set authorized keys + authorized_key: + key: "{{ item }}" + user: "{{ user | default('root') }}" + with_items: "{{ ssh_keys }}" diff --git a/roles/docker-compose/defaults/main.yml b/roles/docker-apps/defaults/main.yml similarity index 100% rename from roles/docker-compose/defaults/main.yml rename to roles/docker-apps/defaults/main.yml diff --git a/roles/docker-apps/tasks/main.yml b/roles/docker-apps/tasks/main.yml new file mode 100644 index 0000000..bae5687 --- /dev/null +++ b/roles/docker-apps/tasks/main.yml @@ -0,0 +1,55 @@ +--- + +- name: Install docker dependencies + apt: + name: "{{ item }}" + with_items: + - gnupg2 + - apt-transport-https + +- name: Trust docker repo key + become: true + apt_key: + id: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88 + url: "https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg" + state: present + +- name: Add docker's apt repository + apt_repository: + repo: "deb [arch=amd64] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} stable" + state: present + +- name: Install docker & python3-pip + apt: + name: + - python3-setuptools + - python3-pip + - docker-ce + state: latest + +- name: Install docker-compose + pip: + name: docker-compose + state: latest + +- name: Enable docker + service: + name: docker + state: started + enabled: yes + +- name: Clone docker configuration + git: + repo: "{{ docker_configuration_repo }}" + dest: "{{ dockers_files_dir }}" + force: yes + clone: yes + update: yes + +- name: Configure docker containers + docker_services: + project_src: "{{ dockers_files_dir }}" + build: yes + pull: yes + recreate: always + state: present diff --git a/roles/docker-compose/files/docker-compose.yml b/roles/docker-compose/files/docker-compose.yml deleted file mode 100644 index 98dedca..0000000 --- a/roles/docker-compose/files/docker-compose.yml +++ /dev/null @@ -1,6 +0,0 @@ -version: '2' - -services: - - -volumes: diff --git a/roles/docker-compose/tasks/install_docker.yml b/roles/docker-compose/tasks/install_docker.yml deleted file mode 100644 index 43a7ef5..0000000 --- a/roles/docker-compose/tasks/install_docker.yml +++ /dev/null @@ -1,57 +0,0 @@ ---- - -- name: Install docker dependencies - apt: - name: '{{ packages }}' - update_cache: yes - cache_valid_time: 3600 - vars: - packages: - - apt-transport-https - - ca-certificates - - curl - - software-properties-common - -- name: Add Docker’s official GPG key - apt_key: - url: https://download.docker.com/linux/ubuntu/gpg - state: present - -- name: Add Docker's official APT repository - apt_repository: - repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ansible_distribution_release}} stable - state: present - update_cache: yes - -- name: - apt: - name: '{{ item }}' - update_cache: yes - cache_valid_time: 3600 - with_items: - - docker-ce - -- name: Add docker group - group: - name: docker - state: present - -- name: Add user to docker group - user: - name: "{{ user }}" - groups: docker - append: yes - -- name: Change a few ownerships to root:docker - file: - path: '{{ item }}' - owner: root - group: docker - with_items: - - /var/run/docker.sock - - /usr/bin/docker - -- name: Restart the docker daemon - service: - name: docker - state: restarted diff --git a/roles/docker-compose/tasks/install_docker_compose.yml b/roles/docker-compose/tasks/install_docker_compose.yml deleted file mode 100644 index 7d87d72..0000000 --- a/roles/docker-compose/tasks/install_docker_compose.yml +++ /dev/null @@ -1,31 +0,0 @@ ---- - -- name: Install dependencies - apt: - name: '{{ packages }}' - update_cache: yes - cache_valid_time: 3600 - vars: - packages: - - build-essential - - libssl-dev - - python-dev - - python-pip - become: yes - become_method: sudo - -- name: Install pipsi - pip: - name: '{{ item }}' - state: forcereinstall - with_items: - - pipsi - executable: pip3 - become: yes - become_method: sudo - -- name: Install docker-compose - command: - pipsi install docker-compose==1.22.0 - args: - creates: "{{ home_dir }}/.local/bin/docker-compose" diff --git a/roles/docker-compose/tasks/main.yml b/roles/docker-compose/tasks/main.yml deleted file mode 100644 index 0f00c6e..0000000 --- a/roles/docker-compose/tasks/main.yml +++ /dev/null @@ -1,34 +0,0 @@ ---- - -- import_tasks: install_docker.yml - become: yes - become_method: sudo - tags: [docker, docker_compose] - -- import_tasks: install_docker_compose.yml - tags: [docker, docker_compose] - -- name: Update bashrc for pipsi scripts - lineinfile: - dest: "{{ home_dir }}/.bashrc" - line: "export PATH=$PATH:{{ home_dir }}/.local/bin" - -- name: Create folders for docker-compose - file: - path: '{{ item }}' - state: directory - owner: '{{ user }}' - group: '{{ group }}' - with_items: - - '{{ dockers_files_dir }}' - - '{{ dockers_volumes_dir }}' - - '{{ dockers_config_dir }}' - - '{{ dockers_env_dir }}' - -- name: docker-compose.yml template file - copy: - src: docker-compose.yml - dest: "{{ docker_compose_filepath }}" - owner: "{{ user }}" - group: "docker" - mode: 0640 diff --git a/roles/python/tasks/main.yml b/roles/python/tasks/main.yml index 416ad22..3c8a3cb 100644 --- a/roles/python/tasks/main.yml +++ b/roles/python/tasks/main.yml @@ -1,17 +1,19 @@ --- -- name: Install some apt packages +- name: Install python apt: name: '{{ packages }}' vars: packages: - - python-dev - - python-pip + - python3-dev + - python3-setuptools + - python3-pip - name: Update pip and setuptools pip: name: '{{ item }}' - state: forcereinstall + state: latest + executable: pip3 with_items: - pip - setuptools