ansible all --list-hosts #看有几台主机
ansible-doc -l |grep service #查看所有带service关键字的命令
ansible-doc copy #查看copy命令说明,用法
ansible-playbook --syntax-check package.yml
ansible-playbook -C package.yml
tail -f /var/log/messages #可以看ansible playbook 运行日志
rpm -qa |grep httpd #检测httpd是否安装好
rpm -qa |grep php #检测php是否安装好
---
- name: Create users
hosts: webservers
tasks:
- name: create alice user # -
user: # 模块名称, ad-hoc中的参数定义
name: alice
state: present
- name: create it group
group:
name: it
state: present
---
- name: install packages
host: prod
tasks:
- name: install httpd and php
yum: #一共安装三个包
name:
- httpd
- php
- mysql-server
state: present
- name: copy index.html to /var/www/html # 将index.html拷贝到httpd服务器中
copy:
src: /home/admin/index.html
dest: /var/www/html/index.html
owner: root
group: root
mode: 0644
- name: started httpd service #用service 模块启动httpd服务
service:
name: httpd
state: started
enabled: yes
- name: install package group
hosts: webservers
tasks:
- name: install development tools
yum:
name: "@Development tools" #加@相当于yum group install,单引号双引号都可以,不加@是安装单个包
state: present #只安装当前版本,对比latest 安装最新版本
- name: upgrade all packages
hosts: all
tasks:
- name: upgrade all package and all hosts
yum:
name: '*' #单引/双引都可
state: latest
- name: copy index.html
copy:
为何用playbook , 而不用command/ shell去做?
因为playbook 可以重复运行,执行过的它会有自动检测的功能,
而且ansible中尽量不要用cmd, shell, script 命令,显得不高级
ansible playbook 顺序执行,前边错了后边不会执行,
最终会传个py 脚本过去,会生成py 程序
会有一个 .ansible 隐藏文件,.ansible/tmp/ansible-temp-XXX.XXX-XXX/xxx.py 中就是生成的py脚本
所以这就是为何你执行ssh 命令执行yml到远程机器,对方机器一定要安装python的原因,客户端机器中会生成py脚本去执行