Skip to content
Snippets Groups Projects
main.yml 4.42 KiB
Newer Older
  • Learn to ignore specific revisions
  • Rémi - Le Filament's avatar
    Rémi - Le Filament committed
    ---
    - name: Include OS-specific variables.
    
      ansible.builtin.include_vars: "{{ ansible_os_family }}.yml"
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
    
    - name: Install apt-transport-https package
    
      ansible.builtin.apt:
          name: apt-transport-https
          install_recommends: false
          state: latest
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
      when: ansible_os_family == "Debian"
    
    - name: Install OS packages
    
      ansible.builtin.package:
          name: "{{ packages_to_install }}"
          state: latest
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
      async: 120
      poll: 10
      when: not ansible_check_mode
    
    - name: Check installed OS packages
    
      ansible.builtin.package:
          name: "{{ packages_to_install }}"
          state: latest
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
      when: ansible_check_mode
    
    
    - name: Create /etc/docker repo
    
      ansible.builtin.file:
          name: /etc/docker
          state: directory
          owner: root
          group: root
          mode: '0755'
    
    - name: Securize docker daemon
      ansible.builtin.template:
          src: daemon.json.j2
          dest: /etc/docker/daemon.json
          owner: root
          group: root
          mode: '0644'
    
      notify:
          - Restart docker daemon
    
    - name: Create .docker repo
    
      ansible.builtin.file:
          name: /root/.docker
          state: directory
          owner: root
          group: root
          mode: '0750'
    
      when: docker_registry_auth is defined
    
    
    - name: Add specific repo auth
      ansible.builtin.copy:
          content: "{{ docker_registry_auth }}"
          dest: /root/.docker/config.json
          owner: root
          group: root
          mode: '0644'
    
      when: docker_registry_auth is defined
    
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
    - name: Create docker repo
    
      ansible.builtin.file:
          name: /home/docker/backups
          state: directory
          owner: root
          group: root
          mode: '0755'
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
    
    ## Install Proxy docker
    - name: Create Inverse Proxy docker structure on server in /home/docker/inverseproxy
    
      ansible.builtin.file:
          name: /home/docker/inverseproxy
          state: directory
          owner: root
          group: root
          mode: '0755'
    
      tags:
        - "docker_proxy"
        - "metabase"
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
    
    - name: Install proxy docker
    
      ansible.builtin.template:
          src: inverseproxy.yaml.j2
          dest: /home/docker/inverseproxy/docker-compose.yaml
          owner: root
          group: root
          mode: '0644'
    
      tags:
        - "docker_proxy"
        - "metabase"
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
      notify:
    
          - restart inverseproxy container
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
    
    - name: Copy Traefik configuration file
    
      ansible.builtin.template:
          src: traefik.toml.j2
          dest: "/home/docker/inverseproxy/traefik.toml"
          owner: root
          group: root
          mode: '0644'
    
      tags:
        - "docker_proxy"
        - "metabase"
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
      notify:
    
          - restart inverseproxy container
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
    
    - name: Copy Docker Facts Collection script on server
    
      ansible.builtin.template:
          src: collect_docker_facts.sh.j2
          dest: /root/collect_docker_facts.sh
          owner: root
          group: root
          mode: '0700'
    
    - name: Add cron job to check Docker versions every day
      ansible.builtin.cron:
          name: collect docker facts
          minute: "1"
          hour: "2"
          job: /root/collect_docker_facts.sh
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
    
    # Flush handlers in order to be able to restart docker daemon with new config and retrieve vars
    - name: Flush handlers
    
      ansible.builtin.meta: flush_handlers
    
    - name: Enable service docker
      ansible.builtin.service:
    
          name: docker
          enabled: true
    
    
    - name: Start service docker, if not started
      ansible.builtin.service:
    
          name: docker
          state: started
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
    - name: Retrieve subuid for dockremap
    
      ansible.builtin.command: grep dockremap /etc/subuid
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
      register: dockremap_subuid_output
    
      when: docker_userns_remap
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
    
    - name: Retrieve subgid for dockremap
    
      ansible.builtin.command: grep dockremap /etc/subgid
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
      register: dockremap_subgid_output
    
      when: docker_userns_remap
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
    
    - name: Save uid to hostvars for dockremap user
    
      ansible.builtin.lineinfile:
          name: "{{ inventory_dir }}/host_vars/{{ inventory_hostname }}"
          regexp: "dockremap_subuid:"
          line: "dockremap_subuid: {{ dockremap_subuid_output.stdout.split(':')[1] }}"
          create: true
          mode: '0664'
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
      connection: local
      become: false
      delegate_to: localhost
    
      when: docker_userns_remap and dockremap_subuid_output.stdout is defined and not ansible_check_mode
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
    
    - name: Save gid to hostvars for dockremap user
    
      ansible.builtin.lineinfile:
          name: "{{ inventory_dir }}/host_vars/{{ inventory_hostname }}"
          regexp: "dockremap_subgid:"
          line: "dockremap_subgid: {{ dockremap_subgid_output.stdout.split(':')[1] }}"
          create: true
          mode: '0664'
    
    Rémi - Le Filament's avatar
    Rémi - Le Filament committed
      connection: local
      become: false
      delegate_to: localhost
    
      when: docker_userns_remap and dockremap_subgid_output.stdout is defined and not ansible_check_mode