Ansible核心组件playbook
Ansible核心功能点就在于playbook,Ansible主要的工作都是在与配置管理,它在实际的工作中会大量编写和使用剧本。
【Ansible剧本】
ansible软件的playbook编写需要遵循YAML语法。
playbook安装nginx
【1.批量卸载所有的nginx】
[root@m01 ~]# ansible chaoge -m yum -a "name=nginx state=absent" [root@m01 ~]# ansible chaoge -m shell -a "rpm -qa nginx warn=false" 192.168.178.110 | CHANGED | rc=0 >> 192.168.178.111 | CHANGED | rc=0 >>
【2.查看一个YAML文件】
[root@m01 scripts]# cat nginx.yaml -n 1 # install nginx yaml ,by chaoge 2 - hosts: all 3 tasks: 4 - name: Install nginx Package 5 yum: name=nginx state=present 6 - name: Copy Nginx.conf 7 copy: src=./nginx.conf dest=/etc/nginx/nginx.conf mode=0644
【3.解释如上的playbook代码】
1.表示注释信息,可以用#,也可以用 --- 三个短横线 2.定义playbook管理的目标主机,all表示所有的主机,也可以写 主机组名 3.定义playbok所有的任务集合信息,比如该文件,定义了2个任务 ,安装nginx,拷贝nginx配置文件 4.定义了任务的名词,自定义的帮助信息 5.定义任务的具体操作,比如这里用yum模块实现nginx的安装 6. 7.第六、第七两行作用是使用copy模块,把本地当前的nginx.conf配置文件,分发给其他所有客户端机器,且授权
Playbook内容组成规范
剧本&hosts部分
定义剧本的hosts部分,可以有如下多种方式,常见的有
# 方式一:定义所管理的主机IP地址 - hosts: 192.168.178.111 tasks: 动作... # 方式二:定义所管理主机的名字 - hosts: backup01 tasks: 动作... # 方式三:定义管理主机 - hosts: 192.168.178.111, rsync01 tasks: 动作... # 方式四:管理所有主机 - hosts: all tasks: 动作...
剧本&tasks部分
变量形式定义task任务
字典形式定义任务
# 方式一:采用变量格式设置任务 tasks: - name: make sure apache is running service: name=https state=running # 当传入的参数列表过长时,可以将其分割到多行 tasks: - name: copy ansible inventory(清单) file to client copy: src=/etc/ansible/hosts dest=/etc/ansible/hosts owner=root group=root mode=0644 # 方式二:采用字典格式设置多任务 tasks: - name: copy ansible inventory file to client copy: src: /etc/ansible/hosts dest: /etc/ansible/hosts owner: root group: root mode: 0644
YAML语法
在学习saltstack过程中,第一要点就是States编写技巧,简称SLS文件。这个文件遵循YAML语法。初学者看这玩意很容易懵逼,来,超哥拯救你学习YAML语法 json xml yaml 数据序列化格式 yaml容易被解析,应用于配置文件 salt的配置文件是yaml配置文件,不能用tab saltstack,k8s,ansible都用的yaml格式配置文件 语法规则 大小写敏感 使用缩进表示层级关系 缩进时禁止tab键,只能空格 缩进的空格数不重要,相同层级的元素左侧对其即可 # 表示注释行 yaml支持的数据结构 对象: 键值对,也称作映射 mapping 哈希hashes 字典 dict 冒号表示 key: value key冒号后必须有 数组: 一组按次序排列的值,又称为序列sequence 列表list 短横线 - list1 纯量: 单个不可再分的值 对象:键值对 yaml first_key: second_key:second_value python { 'first_key':{ 'second_key':'second_value', } }
playbook执行命令
【执行命令】
ansible-playboook nginx.yaml
【查看剧本执行详细输出】
ansible-playbook nginx.yml --verbose
【查看剧本执行影响的主机列表】
ansible-playbook nginx.yml --list-hosts
【执行playbook指定加载的主机清单文件】
ansible-playbook nginx.yml -i /etc/ansible/hosts
【执行playbook时检查剧本语法】
ansible-playbook nginx.yml --syntax-check
【调试playbook任务,模拟执行,不影响主机配置】
ansible-playbook nginx.yml -C
playbook的输出信息
Playbook实践与Rsync、
举例一键创建rsync服务的过程: [root@m01 myyaml]# cat install_rsync.yaml - hosts: 192.168.178.115 tasks: - name: step01,install rsync service yum: name=rsync state=installed - name: step02,edit rsync conf file copy: src=/etc/ansible/rsync_conf/rsyncd.conf dest=/etc/rsync/conf/ - name: step03,create user rsync user: name=rsync state=present createhome=no shell=/sbin/nolgoin - name: step04,create user auth file copy: src=/etc/ansible/rsync_conf/rsync.password dest=/etc/rsync/conf/ mode=0600 - name: step05,create backup dir file: dest=/data_backup/ state=directory owner=rsync group=rsync - name: step06,run rsync server shell: rsync --daemon creates=/var/run/rsync.pid
playbook 扩展
http://book.luffycity.com/linux-book/%E9%AB%98%E6%80%A7%E8%83%BDWeb%E9%9B%86%E7%BE%A4%E5%AE%9E%E6%88%98/Ansible%E5%89%A7%E6%9C%AC.html#playbook%E6%89%A9%E5%B1%95%E9%85%8D%E7%BD%AE