Ansible 独自的工作会议
首先使用ansible命令。
以下是 Ansible 官方网站的链接,其中详细介绍了 Ansible 的入门指南和教程:
http://docs.ansible.com/ansible/latest/intro_getting_started.html
/etc/ansible/hosts 的yml文件
在家长hosts文件中定义悬挂的主机
在children中的hosts中,可以通过重复调用主机来进行分组,即一个主机可以属于多个组。
all: # keys must be unique, i.e. only one 'hosts' per group
hosts:
sv1:
sv2:
sv3:
vars:
mytype: ALLLLLLLLL
children:
dmz:
hosts:
sv1:
sv2:
vars:
mytype: "Overrided by group_vars {{ group_names }}"
internal:
hosts:
sv3:
vars:
mytype: "Overrided by group_vars {{ group_names }}"
mygroup:
hosts:
sv2:
sv3:
vars:
mytype: "Overrided by group_vars {{ group_names }}"
尝试
ansible all -m ping
ansible dmz -a hostname
使用变量
我以为它会变成Bash的变量,但结果不同。
ansible all -a "echo {{ mytype }}" # なんとgroup_varsに上書きされる
ansible mygroup -a "echo {{ mytype }}" # variablesの上書きがいまいち
最好不要覆盖变量。
Ansible的剧本
请提供一个关于最新的《Ansible剧本》的链接。
在playbook中写入目标主机是令人意外的。
$ cat playbook.yml
---
- hosts: mygroup
vars:
http_port: 80
max_clients: 200
remote_user: root
tasks:
- name: ensure apache is running (and enable it at boot)
service: name=httpd state=started enabled=yes
尝试
$ ansible-playbook playbook.yml --syntax-check
$ ansible-playbook playbook.yml --list-hosts
# 実行
$ ansible-playbook playbook.yml
PLAY RECAP ***********************************************************************************************************************
sv1.kidc.jp : ok=1 changed=0 unreachable=0 failed=1
sv2.kidc.jp : ok=2 changed=0 unreachable=0 failed=0
sv1没有Apache,出现了正确的错误信息。
这个 playbook 的编写方法很特殊啊,这就是所谓的 DSL 吧。看起来很难记住吧?
一有时间就会继续写下去。