Terminologia

Inventory

Plik z opisem hostów oraz grup.

Formaty: - INI

mail.example.com

[webservers]
foo.example.com
34.13.15.257

[dbservers]
one.example.com
two.example.com
34.13.15.257
  • YAML
all:
  hosts:
    mail.example.com:
  children:
    webservers:
      hosts:
        foo.example.com:
        34.13.15.257"
    dbservers:
      hosts:
        one.example.com:
        two.example.com:
        34.13.15.257:
  • PY (Dynamic inventory)
#!/usr/bin/env python
import json
import boto3


def main():
    ec2 = boto3.resource('ec2')

    filters = [
        {
            'Name': 'instance-state-name',
            'Values': ['running']
        }
    ]

    instances = ec2.instances.filter(Filters=filters)

    hosts = []

    for instance in instances:
        hosts.append(instance.public_ip_address)

    inventory = {'aws': {
        'hosts': hosts,
        'vars': {
            'ansible_ssh_private_key_file': 'pycon-key.pem',
            'ansible_user': 'ubuntu'
        }
    }}
    print json.dumps(inventory)


if __name__ == "__main__":
    main()

Moduł

Kody wykonywany na zdalnych maszynach. Na przykład:

  • ping
  • apt
  • template

Task

Pojedyncze zadania wykonywane na zdalnej maszynie

- name: install python3-sphinx
  apt:
    name: python3-sphinx
    state: present

Playbook

Orkiestracja zadań, konfiguracji oraz deploymentu.

- hosts: all
  tasks:
   - name: ensure nginx is at the latest version
     apt:
      name: nginx
      state: latest
   - name: start nginx
     service:
        name: nginx
        state: started

Note

They are called playbooks partially because it’s a sports analogy, and it’s supposed to be fun using them. They aren’t workbooks :)`doc`_

Role

Jednostka z zadaniami, konfiguracją, zmiennymi itp.

roles/
   common/
     tasks/
     handlers/
     files/
     templates/
     vars/
     defaults/
     meta/