OSDN Git Service

Regular updates
[twpd/master.git] / ansible.md
1 ---
2 title: Ansible
3 category: Ansible
4 layout: 2017/sheet
5 ---
6
7 {% raw %}
8
9 ## Getting started
10
11 ### About
12 {: .-intro}
13
14 - <https://www.ansible.com/>
15
16 ### Hosts
17
18     $ sudo mkdir /etc/ansible
19     $ sudo vim /etc/ansible/hosts
20
21     [example]
22     192.0.2.101
23     192.0.2.102
24
25 ### Running a playbook
26
27     $ ansible-playbook playbook.yml
28
29 ## Playbook files
30
31 ### Tasks
32
33     - hosts: all
34       user: root
35       sudo: no
36       vars:
37         aaa: bbb
38       tasks:
39         - ...
40       handlers:
41         - ...
42
43 ### Includes
44
45     tasks:
46       - include: db.yml
47     handlers:
48       - include: db.yml user=timmy
49
50 ### Handlers
51
52     handlers:
53       - name: start apache2
54         action: service name=apache2 state=started
55
56     tasks:
57       - name: install apache
58         action: apt pkg=apache2 state=latest
59         notify:
60           - start apache2
61
62 ### Vars
63
64     - host: lol
65       vars_files:
66         - vars.yml
67       vars:
68         project_root: /etc/xyz
69       tasks:
70         - name: Create the SSH directory.
71           file: state=directory path=${project_root}/home/.ssh/
72           only_if: "$vm == 0"
73
74 ### Roles
75
76     - host: xxx
77       roles:
78         - db
79         - { role:ruby, sudo_user:$user }
80         - web
81
82     # Uses:
83     # roles/db/tasks/*.yml
84     # roles/db/handlers/*.yml
85
86 ### Task: Failures
87
88     - name: my task
89       command: ...
90       register: result
91       failed_when: "'FAILED' in result.stderr"
92
93       ignore_errors: yes
94
95       changed_when: "result.rc != 2"
96
97 ### Env vars
98
99     vars:
100       local_home: "{{ lookup('env','HOME') }}"
101
102 {% endraw %}