ansible-playbook剧本使用配置,


1.基本语法,使用yaml格式文件
- hosts: all

remote_user: root
tasks:
\- name: install httpd
  shell: yum install httpd
\- name: copy conf
  copy: src='/etc/httpd/conf.d/http_tomcat.conf.bak' dest='/etc/httpd/conf.d/'
\- name: start httpd
  service: name=httpd enabled=yes state=started
tags: task1

10

2. hosts:指定主机,必须为/etc/ansible/hosts定义的主机
可为单个或多个
3.remote_user:root
指定远程运行的用户
4.tasks:一个剧本中要运行的任务
必须有name:任务名称
后跟ansible模块名,如shell,service,copy等
在某个模块中需要指定好选项与值,key=value格式,如
service: name=httpd enabled=yes state=started
shell与command模块直接加命令即可
5.tags:给该任务定义一个标签,如tags:task1
在使用ansible-playbook -t task1 x.yaml 时,指定-t 加tags名可以只运行某个任务
6.在定义完x.yaml文件后,可以使用ansible-playbook --check x.yaml 测试是否存在问题
9
7.ansible-playbook --list-hosts 2.yaml 查看当前剧本的主机列表
8.在/etc/ansible/hosts中定义变量并引用:
12
9.使用absible-playbook引用模板tempalte:如自定义httpd.conf文件中的监听端口:

13
Listen {{ httpd_port }} 引用刚才定义在各主机的httpd变量。
创建一个新的yaml文件:
14
ansible-playbook xxx.yaml
使用template模块复制并重启,可以实现不对主机监听不同端口
10.ansible all -m setup|grep ansible_processor :可以通过 ansible all -m set|grep xxx 查找想要的变量值,但是不支持通配符
11.ansible使用roles快速重用配置:
image
/etc/ansible/roles/ 创建需要的角色,如nginx,mysql等等
各角色文件下包含以下几个目录:
files:存放copy模块或script模块调用时的文件
templates:template模块查找所需要的文件
tasks:存放任务的文件至少包含一个main.yml文件
vars:存在定义变量的文件至少包含一个main.yml文件
tasks目录下main.yml内容:
15

12.ansible-playbook调用roles16
若存在多个roles则继续调用:
- hosts:all
remote_user: root
roles:
- nginx
- mysql

相关内容