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 吧。看起来很难记住吧?


一有时间就会继续写下去。

广告
将在 10 秒后关闭
bannerAds