diff --git a/evoacme/files/backports-certbot b/evoacme/files/backports-certbot new file mode 100644 index 00000000..04930288 --- /dev/null +++ b/evoacme/files/backports-certbot @@ -0,0 +1,3 @@ +Package: certbot python-certbot python-acme python-cryptography python-openssl python-setuptools python-ndg-httpsclient python-pyasn1 python-pkg-resources +Pin: release a=jessie-backports +Pin-Priority: 999 diff --git a/evoacme/handlers/main.yml b/evoacme/handlers/main.yml index 844cf8f7..03538de9 100644 --- a/evoacme/handlers/main.yml +++ b/evoacme/handlers/main.yml @@ -9,3 +9,7 @@ service: name: apache2 state: reloaded + +- name: apt update + apt: + update_cache: yes diff --git a/evoacme/meta/main.yml b/evoacme/meta/main.yml index 938b474a..8870bb92 100644 --- a/evoacme/meta/main.yml +++ b/evoacme/meta/main.yml @@ -12,6 +12,7 @@ galaxy_info: - name: Debian versions: - jessie + - stretch dependencies: [] # List your role dependencies here, one per line. diff --git a/evoacme/tasks/certbot.yml b/evoacme/tasks/certbot.yml index 26bfea53..25bd5d0b 100644 --- a/evoacme/tasks/certbot.yml +++ b/evoacme/tasks/certbot.yml @@ -1,106 +1,47 @@ --- -- name: Set certbot release to Debian stable - set_fact: - evoacme_certbot_release: stable - when: - - ansible_distribution is defined - - ansible_distribution == "Debian" - - ansible_distribution_major_version is defined - - ansible_distribution_major_version|int > 8 - -- name: Set certbot relase to jessie-backports - set_fact: - evoacme_certbot_release: jessie-backports - when: - - ansible_distribution is defined - - ansible_distribution == "Debian" - - ansible_distribution_major_version is defined - - ansible_distribution_major_version == "8" - block: - - name: Add backports repository - lineinfile: - dest: /etc/apt/sources.list.d/backports.list - line: 'deb http://mirror.evolix.org/debian jessie-backports main' - state: present - register: add_backports - when: evoacme_certbot_release == "jessie-backports" + - name: install jessie-backports + include_role: + name: "{{ roles }}/apt-repositories" + vars: + apt_repositories_install_backports: True - name: Add exceptions for certbot dependances - blockinfile: - dest: /etc/apt/preferences.d/backports - marker: "## {mark} ANSIBLE MANAGED BLOCK" - block: | - Package: certbot python-certbot python-acme python-cryptography python-openssl python-setuptools python-ndg-httpsclient python-pyasn1 python-pkg-resources - Pin: release a=jessie-backports - Pin-Priority: 999 - when: evoacme_certbot_release == "jessie-backports" - - - name: Apt update - apt: - update_cache: yes - when: - - add_backports is defined - - add_backports|changed - - - name: Install certbot with apt - apt: - name: certbot - state: latest - default_release: "{{ evoacme_certbot_release }}" - - - name: Check if /usr is a partition - shell: "mount | grep 'on /usr type'" - args: - warn: no - changed_when: False - failed_when: False - #check_mode: no (for migration to Ansible 2.2) - always_run: yes - register: usr_partition - - - name: Mount /usr in rw - command: mount -o remount,rw /usr - args: - warn: no - changed_when: False - when: usr_partition.rc == 0 - - - name: Remove certbot symlink for apt install - file: - path: /usr/local/bin/certbot - state: absent - when: evoacme_certbot_release is defined - -- block: - - name: Install certbot from source - git: - repo: https://github.com/certbot/certbot.git - dest: /opt/certbot - update: yes - - - name: Fix certbot right for source install - file: - path: /opt/certbot - recurse: yes - state: directory - mode: "g+rX,o+rX" - - - name: Install certbot symlink for source install copy: - dest: /usr/local/bin/certbot - content: | - #!/bin/sh - sudo /opt/certbot/certbot-auto $@ - mode: "0755" + src: backports-certbot + dest: /etc/apt/preferences.d/z-backports-certbot + notify: apt update - - name: Add sudo right for source install - copy: - src: files/sudoers - dest: /etc/sudoers.d/certbot - mode: "0440" - validate: '/usr/sbin/visudo -cf %s' - when: evoacme_certbot_release is undefined + - meta: flush_handlers + when: ansible_distribution_release == "jessie" + +- name: Install certbot with apt + apt: + name: certbot + state: latest + +- name: Check if /usr is a partition + shell: "mount | grep 'on /usr type'" + args: + warn: no + changed_when: False + failed_when: False + #check_mode: no (for migration to Ansible 2.2) + always_run: yes + register: usr_partition + +- name: Mount /usr in rw + command: mount -o remount,rw /usr + args: + warn: no + changed_when: False + when: usr_partition.rc == 0 + +- name: Remove certbot symlink for apt install + file: + path: /usr/local/bin/certbot + state: absent - name: Remove certbot dpkg cron file: diff --git a/evoacme/tasks/main.yml b/evoacme/tasks/main.yml index d9798839..a3dccbd7 100644 --- a/evoacme/tasks/main.yml +++ b/evoacme/tasks/main.yml @@ -1,4 +1,12 @@ --- + +- name: Fail if distribution is not supported + fail: + msg: "Error: '{{ ansible_os_family }} {{ ansible_distribution_release }}' is not a supported distribution." + when: + - ansible_distribution_release != "jessie" + - ansible_distribution_release != "stretch" + - include: tasks/certbot.yml - include: tasks/acme.yml