单文件剧本示例user_add.yaml
# 指定主机组
- hosts: vm
# 用于远程连接的用户名
remote_user: root
# 不收集主机信息
gather_facts: no
# 任务列表
tasks:
- name: 添加用户
user: name=xiaoming state=present
tags:
- num1
- name: 添加组
group: name=atmgrp state=present
tags:
- num2
- name: 复制文件
copy: src=/etc/passwd dest=/home
tags:
- num1
检查语法
ansible-playbook --syntax-check user_add.yaml
预执行
ansible-playbook -C user_add.yaml
执行
ansible-playbook user_add.yaml
基于标签tags执行
ansible-playbook -t num1 user_add.yaml
基于角色的剧本示例
在/etc/ansible/roles内创建角色名目录
mkdir -pv /etc/ansible/roles/mariadb{tasks,handlers,files}
任务示例/etc/ansible/roles/mariadb/tasks/main.yaml
- name: install mariadb
yum: name=mariadb-server state=present
- name: mv conf file
shell: "[ -e /etc/my.cnf ] && mv /etc/my.cnf /etc/my.cnf.bak"
- name: cp file
copy: src=my.cnf dest=/etc/my.cnf
- name: reload mariadb
shell: "systemctl restart mariadb"
- name: create db
shell: mysql -u root -e "create database testdb;grant all on testdb.* to 'test'@'192.168.112.%' identified by 'test1234';flush privileges;"
notify:
- restart mariadb
触发示例/etc/ansible/roles/mariadb/handlers/main.yaml
- name: restart mariadb
service: name=mariadb state=restarted
引用文件示例/etc/ansible/roles/mariadb/files/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
主剧本示例install_mariadb.yaml
- hosts: vm
remote_user: root
gather_facts: no
roles:
- mariadb
检查语法
ansible-playbook --syntax-check install_mariadb.yaml
预执行
ansible-playbook -C install_mariadb.yaml
执行
ansible-playbook install_mariadb.yaml