天天看点

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           
ansible-playbook剧本使用配置

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 测试是否存在问题

ansible-playbook剧本使用配置

7.ansible-playbook --list-hosts 2.yaml 查看当前剧本的主机列表

8.在/etc/ansible/hosts中定义变量并引用:

ansible-playbook剧本使用配置

9.使用absible-playbook引用模板tempalte:如自定义httpd.conf文件中的监听端口:

ansible-playbook剧本使用配置

Listen {{ httpd_port }} 引用刚才定义在各主机的httpd变量。

创建一个新的yaml文件:

ansible-playbook剧本使用配置

ansible-playbook xxx.yaml

使用template模块复制并重启,可以实现不对主机监听不同端口

10.ansible all -m setup|grep ansible_processor :可以通过 ansible all -m set|grep xxx 查找想要的变量值,但是不支持通配符

11.ansible使用roles快速重用配置:

ansible-playbook剧本使用配置

/etc/ansible/roles/ 创建需要的角色,如nginx,mysql等等

各角色文件下包含以下几个目录:

files:存放copy模块或script模块调用时的文件

templates:template模块查找所需要的文件

tasks:存放任务的文件至少包含一个main.yml文件

vars:存在定义变量的文件至少包含一个main.yml文件

tasks目录下main.yml内容:

ansible-playbook剧本使用配置

12.ansible-playbook调用roles

ansible-playbook剧本使用配置

若存在多个roles则继续调用:

- hosts:all

remote_user: root

roles:

- nginx

- mysql

继续阅读