Ansible学习
1.Ansible工具
ansible all -m ping 对所有主机使用ping ansible ‘IP’ -m ping 对制定IP使用ping
ansible-doc -l 列出所有模块 -ping 查看ping模块的用法
ansible-playbook 执行剧本
准备工作
1.首先在/etc/ansible/hosts 写入远程主机
[webservers]
192.168.198.31
2.分发ssh密钥
ssh-keygen
ssh-copy-id root@192.168.198.31
2.常用模块
ansible -m 指定模块
command 默认模块 执行普通命令 此命令不支持 $VARNAME < > | ; & 等,用shell模块实现
shell 执行shell命令
scrip 在目的主机执行ansible服务器上的脚本
copy 从ansible服务器上复制文件到目的主机
ansible webserver -m copy -a ‘src=/root/test dest=/root/test’
yum 管理软件包
ansible webserver -m yum -a ‘name=httpd state=present’
state=present安装 state=absent卸载 state=lasted更新
service 管理服务
ansible webserver -m service -a ‘name=httpd state=started’
state=started 启动 stopped 结束 reloaded 重载 restarted重启
user 管理用户
ansible webserver -m user -a ‘name=user1 uid=7777 home=/home/user1’添加用户
ansible webserver -m user -a ‘name=user1 state=absent remove=yes’删除
setup 获取主机系统信息
ansible webserver -m setup -a ‘filter=ansible_nodename’
3.playbook
简单的例子
---
- hosts: webservers
remote_user: root
vars:
- user: czy
- home: home/czy
tasks:
- name: create user
user: name={{user}} uid=1236
- name: templates use
template: src=test_templates dest=/root/test_templates #src在yml同一目录
notify:
- noti
handlers:
- name: noti
shell: touch a.txt
Playbook核心元素
- Hosts 执行的远程主机列表
- remote_user 登陆用户
- Tasks 任务集
- Variables 内置变量或自定义变量在playbook中调用 -e 指定变量 | 在yaml中指定 | 内置变量
- Templates 模板,可替换模板文件中的变量并实现一些简单逻辑的文件
- Handlers 和 notify 结合使用,由特定条件触发的操作,满足条件方才执行,否则不执行
- tags 标签 指定某条任务执行
roles
roles目录模板
site.yml # master playbook 主 playbook
webservers.yml # playbook for webserver tier Web 服务器的 playbook
dbservers.yml # playbook for dbserver tier 数据库服务器的 playbook
roles/
common/ #
tasks/ # 存放任务
main.yml # <-- tasks file can include smaller files if warranted
handlers/ # 存放触发器
main.yml # <-- handlers file
templates/ # 存放模板文件
ntp.conf.j2 # <------- templates end in .j2
files/ # 存放由copy或script模块等调用的文件
bar.txt # <-- files for use with the copy resource
foo.sh # <-- script files for use with the script resource
vars/ # 存放变量
main.yml # <-- variables associated with this role
defaults/ # 存放比vars的优先级低的变量
main.yml # <-- default lower priority variables for this role
meta/ # 定义当前角色的特殊设定及其依赖关系
main.yml # <-- role dependencies
实现nginx角色
目录
nginx
├── handlers
│ └── main.yml
├── tasks
│ ├── config.yml
│ ├── file.yml
│ ├── install.yml
│ ├── main.yml
│ └── service.yml
├── templates
│ └── nginx.conf.j2
└── vars
└── main.yml