ansible学习(入职小灰)
ansible学习
学习方向:
了解ansible(从其可以解决什么问题方面入手)
ansible安装与配置
学会使用role
学会编写role
1:安装配置:
安装配置:参考ansible笔记
弄3台虚拟机搞搞,嘿嘿
linux centos7.2,版本有点旧,不过还凑合
10.0.0.101:test01
10.0.0.100:test02
1:安装yum install ansible -y
这个安装pip yum都随便用,能装出来就行了
喝,乖乖,这么多依赖,看来是对python版本要求还不低啊
查看当前python版本
应该可以用吧,如果想确保没问题,升级成3.x以上肯定没问题的。详细请参考:我就待会写,你能拿我怎么办(~ ̄▽ ̄)~
2:配置vim /etc/ansible/hosts
[[email protected] ~]# vim /etc/ansible/hosts
在最后直接定义
这里有一点,ansible管理,前提是可以免密登录到客户机上。免密登录谁不会啊,不会就参考: https://blog.csdn.net/qq_37960324/article/details/82153833
安装配置简单,直接来个难点的。对于我这种初学者来说, roles模块是一个挑战啊
3:roles模块自杀式体验
先写一个简单的剧本,太简单也不行,就看看zabbix-agent吧,至少得改改配置文件。你以为我是挑简单的写么?才不是╭(╯^╰)╮
如果一个公司装了zabbix服务器,那么要加上被监控服务器,一台台装?别做梦了。虽然一般公司都有现成的。但自己写出来理解一个比较容易些。。。
1:首先在test02上装个zabbix-server(安装就懒得讲了,后续会专门加上这个zabbix模块的,毕竟现在很多企业都用这个)
2:server上:自己创个目录用来装roles模块
[[email protected] .ssh]# mkdir -p ansible_playbooks/roles/ zabbix_agent/{tasks,files,templates,meta,handlers,vars,default}
介绍一下:
tasks目录: main.yml,其定义了此角色的任务列表;此文件可以使用include包含其它的位于此目录中的task文件;
files目录:存放由copy或script等模块调用的文件;
templates目录:template模块会自动在此目录中寻找Jinja2模板文件;
handlers目录: main.yml,用于定义此角色用到的各handler;在handler中使用include包含的其它的handler文件也应该位于此目录中;
vars目录: main.yml,用于定义此角色用到的变量;
meta目录: main.yml,用于定义此角色的特殊设定及其依赖关系;
ansible1.3及其以后的版本才支持;
default目录:main.yml,为当前角色设定默认变量时使用此目录。
主要记得tasks,files,handler即可---因为第一次搞这个ansible剧本,别见怪啊
还要配置ansible.cfg
[[email protected] zabbix_agent]# vim /etc/ansible/ansible.cfg
把默认的改成自己创建的路径即可
好了,忙正事
tasks是个好东西
[[email protected] zabbix_agent]# vim tasks/main.yml
好心贴出来吧♪(・ω・)ノ
- name: make dictionary for rpm
command: mkdir -p /service/tools
- name: install zabbix-agent package
copy: src=zabbix-agent-3.4.2-1.el7.x86_64.rpm dest=/service/tools/zabbix-agent-3.4.2-1.el7.x86_64.rpm
- name: install zabbix-agent
command: yum localinstall /service/tools/zabbix-agent-3.4.2-1.el7.x86_64.rpm -y
- name: install zabbix-agentd.conf
copy: src=change.sh dest=/service/tools/change.sh
- name: doing change.sh
shell: /usr/bin/sh /service/tools/change.sh
- name: start zabbix-agent
service: name=zabbix-agent enabled=true state=started
记得加执行权限
[[email protected] zabbix_agent]# chmod +x tasks/main.yml
[[email protected] zabbix_agent]# vim handlers/main.yml
这是,如果有重启的话就执行restart
[[email protected] zabbix_agent]# chmod +x handlers/main.yml
在files目录下,创建change.sh文件和生成zabbix-agent的rpm包
[[email protected] files]# vim change.sh
[[email protected] files]# chmod +x change.sh
就用着几个了,因为初学,还不太深入
有大神请指教我下咯(~ ̄▽ ̄)~
是不是感觉有点少啊,再来个http服务吧,反正不碍事
O(∩_∩)O~~~~
[[email protected] roles]# mkdir -p /lalala/ansible/roles/http_d/{tasks,files,templates,meta,handlers,vars,default}
没毛病
[[email protected] http_d]# vim tasks/main.yml
- name: install httpd package
yum: name=httpd state=latest
- name: start httpd
service: name=httpd enabled=true state=started
[[email protected] http_d]# chmod +x tasks/main.yml
[[email protected] http_d]# vim handlers/main.yml
[[email protected] http_d]# chmod +x handlers/main.yml
[[email protected] http_d]# vim vars/main.yml
[[email protected] http_d]# chmod +x vars/main.yml
大概够了吧
创建执行目录test_works
与roles在同一目录下
[[email protected] test_works]# vim zabbix_agent.yml
[[email protected] test_works]# chmod +x zabbix_agent.yml
[[email protected] test_works]# vim httpd.yml
[[email protected] test_works]# chmod +x httpd.yml
检查一下
测试:
[[email protected] test_works]# ansible-playbook --check zabbix_agent.yml
没毛病,两个都跑了
(~ ̄▽ ̄)~
来来来,开搞O(∩_∩)O!!!
[[email protected] test_works]# ansible-playbook zabbix_agent.yml
只定义了应该test01:10.0.0.101
没毛病,完成||ヽ(* ̄▽ ̄*)ノミ|Ю
[[email protected] test_works]# ansible-playbook httpd.yml
也没问题~~||ヽ(* ̄▽ ̄*)ノミ|Ю
检查端口:
没毛病!!!!(~ ̄▽ ̄)~