最近想把手上上百多台的vps全部纳入公司的管理平台统一管理,管理方式是通过snmp的方式进行通信。现在问题来了,这些vps的snmp配置参差不齐,有些连snmp都没有安装。上百多台机器要手动一台台去配置效率太低。这时候ansible就体现出它的价值了。
一、ansible结构
├── hosts ├── roles │ └── snmp │ ├── files │ │ ├── snmpd │ │ └── snmpd.conf │ ├── tasks │ │ ├── copy.yml │ │ ├── delete.yml │ │ ├── install.yml │ │ └── main.yml │ ├── templates │ └── main.yml └── site.yml
PS:
hosts:里面是需要更改的机器IP
roles:是规则文件夹,下面可以根据不同的规则定义不同的文件夹,如:snmp
files:存放需要同步到其他机器的文件
tasks:工作脚本
main.yml:主脚本
site.yml:指定hosts和roles的规则文件夹
二、脚本内容
site.yml
--- - hosts: all roles: - snmp
PS:运行hosts里的全部ip和调用snmp文件夹下的脚本
main.yml
- include: install.yml - include: copy.yml
PS:运行install.yml和copy.yml脚本
copy.yml
- name: Copy configure file copy: src={{ item }} dest=/etc/snmp/ with_items: - snmpd.conf - name: restart snmpd shell: /etc/init.d/snmpd restart
PS:
-name:相当于注释
copy:src后面跟的是一个变量,方便修改;dest的路径是copy到目标机器的路径
with_items:src上的变量
shell:脚本命令
install.yml
- name: install snmpd shell: yum install -y {{ item }} {{ item }} with_items: - net-snmp - net-snmp-utils
三、语法命令
1、基本命令
ansible-playbook -i hosts site.yml
2、不想一次全部运行hosts里的ip
ansible-playbook -i hosts site.yml --extra-vars "hosts=db"
PS:--extra-vars指定运行的ip组
这时候还需要更改以下几个地方:
1、hosts文件的格式(把IP分成了db和ap两组)
[db] 192.168.1.10 [ap] 192.168.1.11
2、site.yml格式(hosts后面的all替换成'{{hosts}}')
--- - hosts: '{{ hosts }}' roles: - snmp
3、main.yml格式(添加when语句,指定运行db组)
- include: install.yml when:"hosts == 'db'" - include: copy.yml when:"hosts == 'db'"

聂扬帆博客
一个分享IT运维相关工作经验和实战技巧的个人博客
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏