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
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 测试是否存在问题
7.ansible-playbook --list-hosts 2.yaml 查看当前剧本的主机列表
8.在/etc/ansible/hosts中定义变量并引用:
9.使用absible-playbook引用模板tempalte:如自定义httpd.conf文件中的监听端口:
Listen {{ httpd_port }} 引用刚才定义在各主机的httpd变量。
创建一个新的yaml文件:
ansible-playbook xxx.yaml
使用template模块复制并重启,可以实现不对主机监听不同端口
10.ansible all -m setup|grep ansible_processor :可以通过 ansible all -m set|grep xxx 查找想要的变量值,但是不支持通配符
11.ansible使用roles快速重用配置:
/etc/ansible/roles/ 创建需要的角色,如nginx,mysql等等
各角色文件下包含以下几个目录:
files:存放copy模块或script模块调用时的文件
templates:template模块查找所需要的文件
tasks:存放任务的文件至少包含一个main.yml文件
vars:存在定义变量的文件至少包含一个main.yml文件
tasks目录下main.yml内容:
12.ansible-playbook调用roles
若存在多个roles则继续调用:
- hosts:all
remote_user: root
roles:
- nginx
- mysql