ansible-playbook 应用

YAML标记语言
基本语法规则:
    大小写敏感
    使用缩进表示层级关系
    缩进时不允许使用tab键,只允许使用空格
    缩进的空格数目不重要,只要相同层级的元素左对齐即可
    # 表示注释
YAML支持的数据结构有三种:
    对象:
        对象的一组键值对,使用冒号结构表示。
        my_key:my_value
    数组:
        数据结构的子成员是一个数组,则可以在该项下面缩进一个空格
        languages:
         - python
         - perl
         - ruby
    纯量:
        纯量是最基本的、不可再分的值
        字符串var:abc
        布尔值var:true
        整数var:123
        浮点数var:123.123
        Null var:~
        时间time:2000-12-12
        日期date:20:20:20
playbook用来完成将任务写到一个YAML格式的文件中,然后利用ansible-playbook进行调用该文件,从而实现了多条语句,可重复执行的效果,类似shell脚本的效果,ansible的playbook要借助YAML文件来实现,YAML文件扩展名通常为.yaml或者.ym

playbook的基础组件
    hosts:运行指定任务的目标主机,多主机用冒号分隔
    remote_user:在远程主机上执行任务的用户,可以全局指定,也可以单个任务指定
    sudo_user:表示以sudo方式运行任务时,切换为哪个用户身份运行
    tasks:任务列表

示例
- hosts: wyq
  remote_user: root
  tasks:
  - name:  add_group
    group: gid=8888 name=redhat state=present
  - name: copy
    copy: src=/etc/hosts dest=/tmp/

1.用户在.yml文件自定义变量
---
- hosts: wyq
  remote_user: root
  vars:
  - packname: "nmap"
  tasks:
  - name: uninstall nmap
    yum: name={{packname}} state=absent

2.通过-e参数传递的变量
---
- hosts: wyq
  remote_user: root
  tasks:
  - name: install package nmap
    yum: name={{pkname}} state=present

ansible-playbook vartest.yml -e pkname=nmap

3.通过主机或主机配置文件传递变量
主机
vim /etc/ansible/hosts 
[wyq]
192.168.254.228 package=nmap

---
- hosts: wyq
  remote_user: root
  tasks:
  - name: install package nmap
    yum: name={{package}} state=present

ansible-playbook vartest.yml

主机组
vim /etc/ansible/hosts 
[wyq]
192.168.254.228 
#192.168.254.244
#127.0.0.1

[wyq:vars]
packname=nmap

---
- hosts: wyq
  remote_user: root
  tasks:
  - name: install package nmap
    yum: name={{packname}} state=abesent

通过facts获取的系统的变量
即ansible wyq -m setup查到的变量
---
- hosts: wyq
  remote_user: root
  tasks:
  - name: save facts var in file
    shell: echo "{{ansible_default_ipv4.address}}" >> /tmp/vars.txt
    

你可能感兴趣的:(运维工具)