Napiszmy historię

Playbooki powinny być jaki historia, pełna dobrze odegranych ról.

Bohater

Marian

alternate text alternate text

Marian jest hipisem, dlatego nie przepada za statycznym typowaniem. Jest też dorosły i odpowiedzialny. Dlatego Python będzie świetnym dla niego.

Rola: Python

roles/
   python/
     tasks/
         main.yml
     defaults/
         main.yml

Defaults

python_version: 3.6

Tasks

---

- name: Add latest Python
  apt_repository:
    repo: "ppa:jonathonf/python-{{ python_version }}"
    state: present
  when: ansible_distribution == 'Ubuntu' and ansible_distribution_version != '18.04'

- name: install Python with dev
  apt:
    name: "{{ item }}"
    state: present
  with_items:
      - "python{{ python_version }}"
      - "python-dev"
      - "python{{ python_version }}-dev"
      - "python{{ python_version }}-venv"

- name: install Pip
  apt:
    name: "{{ item }}"
    state: present
  with_items:
      - python-pip
      - python3-pip

- name: install Venv for python3
  apt:
    name: "python{{ python_version }}-venv"
    state: present

- name: install Venv for python2
  pip:
    name: "virtualenv"
    state: present

Output

$ ansible-playbook playbooks/python.yml

PLAY [install and config python] ***************************************************************************************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************************************************************************************************
ok: [localhost]

TASK [python : Add latest Python] **************************************************************************************************************************************************************************
skipping: [localhost]

TASK [python : install Python with dev] ********************************************************************************************************************************************************************
changed: [localhost] => (item=[u'python3.6', u'python-dev', u'python3.6-dev', u'python3.6-venv'])

TASK [python : install Pip] ********************************************************************************************************************************************************************************
changed: [localhost] => (item=[u'python-pip', u'python3-pip'])

TASK [python : install Venv for python3] *******************************************************************************************************************************************************************
ok: [localhost]

TASK [python : install Venv for python2] *******************************************************************************************************************************************************************
ok: [localhost]

PLAY RECAP *************************************************************************************************************************************************************************************************
localhost                  : ok=5    changed=2    unreachable=0    failed=0

Note

Apt jest, jak każdy widzi. apt