建立一个ansible的脚本
ansible-playbook -C var.yml 检查该脚本语法
在另一个重复控制端主机会话中输入 ansible all -a ‘ls /data -l’ 验证是否能ll
查看被控制端的主机内存情况,ansible all -m setup | grep mem
把变量都放到一个文件中。
vim vars.yml
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/676f581c86456faf7c755be17706755a.png)
调用变量
vim testvar.yml
-
host: websrvs
remote_user: root
vars_files:- vars.yml
tasks:
- name: install package
yum: name={{ var1 }} 是否可以多个变量,用逗号隔开? - name: create file
file: name=/data/{{ var2 }}.log state=touch
ansible-playbook -C testvar.yml ansible基于ssh协议,效率有所慢,装代理,效率就快很多。
ansible websrvs -m shell -a ‘rpm -a httpd’
ansible websrvs -m shell -a ‘ls -l /data’ 直接用默认模块试试呢?
应用场景,复制配置文件到被控制端,且配置文件根据被控制端的性能做出修改
安装nginx,查看/etc/nginx/nginx.conf
worker_processes atuo; 工作进程数量,根据主机CPU是几核来定义
systemctl start nginx
ps -aux|grep nginx
lscpu
这时候cp模块就不能支持,templates(模板)就出来了
// 是整除,取整 %是取余,**指数运算
ansible-doc -s template 查看帮助文档
只能用于playbook中
cp /etc/nginx/nginx.conf /templates/nginx.conf.j2
vim testtemp.yml
需求:workerer的进程是cpu的两倍
那么在不同主机上定义各自的端口呢?
在主机名单上可以定义
还可以在playbook中定义(yml脚本)
还可以在命令中
变量优先级 命令行>playbook脚本>主机清单
当版本的不同,配置文件也不同,这个时候呢?
就得需要用when语句
过滤操作系统
过滤版本
6上的配置文件拷贝到控制端上