Ansible playbooks 入门
Test Playbooks
inventory/ server详细清单目录
testenv 具体清单与变量声明文件
roles/ 需要部署的详细任务列表
testbox/ 项目或APP名称
tasks/ 保存最终task任务乐章
main.yml 具体任务
deploy.yml 任务入口
详细目录testenv
[testservers]
test.example.com
[testservers:vars]
server_name=test.example.com
user=root
output=/root/test.txt
主任务文件mail.yml
- name: Print server name and user to remote testbox
shell: "echo 'Currently {{ user }} is logging {{ server_name }}' > {{ output }}"
任务入口文件deploy.yml
- hosts: "testservers"
gather_facts: true
remote_user: root
roles:
- testbox
Ansible常用模块
1. File模块
在目标主机创建文件或目录,并赋予其系统权限
- name: create a file
file: 'path=/root/foo.txt state=touch mode=0755 owner=foo group=foo'
2. Copy模块
实现Ansible服务端到目标主机的文件传输
- name: copy a file
copy: 'remote_src=no src=roles/testbox/files/foo.sh dest=/root/foo.sh mode=0644 force=yes'
3. Stat模块
获取远程文件状态信息
- name: check if foo.sh exists
stat: 'path=/root/foo.sh'
register: script_stat
4. Debug模块
打印语句到Ansible执行输出
- debug: msg=foo.sh exits
when: script_stat.stat.exists
5. Shell模块
用来执行Linux目标主机命令
- name: run the script
shell: "echo 'test' > /root/test.txt"
6. Template模块
实现Ansible服务端到目标主机的jinja2模块传输
- name: write the nginx config file
template: src=roles/testbox/templates/nginx.conf.j2 dest=/etc/nginx/nginx.conf
7. Packaging模块
调用目标主机系统包管理工具(yum,apt)进行安装
- name: ensure nginx is at the latest version
yum: pkg=nginx state=latest
- name: ensure nginx is at the latest version
apt: pkg=nginx state=latest
8. Service模块
管理目标主机系统服务
- name: start nginx service
service: name=nginx state=started