ansible自动化运维

ansible是基于python语言所开发出的一款轻量级的自动化运维软件。python

ansible的优势:基于ssh通讯,不须要在客户端安装任何插件,因此易于部署。                            注:搞个密钥对,而后将公钥传到各个奴隶节点上就OK了。docker

                          具备丰富的操做模块,也能够本身用python编写第三方模块,因此他的扩展性高。shell

                          可编写playbook来定制强大的需求,其实就是将多个命令写到一个脚本内。运维

 

ansbile执行命令流程:1.加载本身的配置文件   2.查找主机清单中的主机或组   3.  加载使用的模块文件   ssh

                                      4.生成python临时脚本并传送到各个奴隶节点上   5.文件加执行权限   6.执行脚本返回结果并删除临时脚本。            异步

ansible配置文件介绍:工具

inventory = /etc/ansible/hosts   指定清单文件目录fetch

library = /usr/share/my_modules/    指定模块的自定义目录ui

module_utils = /usr/share/my_module_utils/   模块的公用目录spa

remote_tmp = ~./ansible/tmp     指定目标主机存放临时脚本的地方

local_tmp = ~./ansible/tmp         指定本主机存放临时脚本的地方

plugin_filters_cfg = /etc/ansible/plugin_filters.yml      过滤没有的插件的配置文件

forks = 5     指定ansible执行时启动多少个进程并行执行

poll_interval = 15  指定ansible异步执行的轮训时间

sudo_user = root   指定sudo的用户

remote_port = 22   默认的链接端口

 

ansible命令选项:

ansible-config dump 查看配置文件加载的环境变量。

ansible-doc -l:查看全部的模块

ansible-doc -s 模块名:获取指定模块的使用信息。

-m 模块名:指定使用模块。

-a:模块的参数

-B:异步的超时时间

-e:添加变量

-k:输入ssh密码

-K:输入sudo的用户

-u:指定远程的用户

-i:指定清单文件路径

-l:只运行那些主机

-C:检测命令运行结果。

-f:指定并行执行任务的数量     注:默认为5。

-T:指定ssh链接超时时间         注:默认为10s

-o:将执行结果以一行来显示。

-v -vv -vvv -vvvv:查看命令执行的详细信息,v越多越详细。

--list-hosts:查看主机组下的内容。

--version:显示版本信息

--syntax-check:检测playbook运行是否正常

ansible 清单变量搞一搞:

[test]
localhost ansible_connection=local      指定链接主机类型 local为本主机    也能够指定docker等等。

[play]
192.168.100.202 ansible_ssh_pass=123123 zcl=zcl 此变量权限最大。

[test2:children]     
test
play

[test2:vars]
zcl=nb       此变量权限第二大。

[all:vars]
zcl=hehe     此变量权限最小。

 

ansible经常使用模块:

1.command模块

ansible play -m command -a 'chdir /etc/ ls':切换到/etc/下执行命令。

ansible play -m command -a 'creates=/root/zcl.text ls':判断文件若是存在则不执行命令。

ansible play -m command -a 'removet=/root/zcl.text ls':判断文件若是不存在则不执行命令。

2.ping模块

ansible play -m ping:检测通讯

3.shell模块

ansible play -m shell -a 'cat /etc/passwd |grep zcl':支持"|","<",">","&"

4.copy模块

ansible play -m copy -a 'src=/root/zcl date=/data/': src指定本地文件  date指定copy到的路径

ansible play -m copy -a 'content="zcl wudi1234\n" dest=/data/name mode=666':content指定文件内容  mode指定文件权限。

ansible play -m copy -a 'content="zcl 呵呵" backup=yes mode=666':backup修改文件并备份原有文件。

5.file模块

ansible play -m file -a 'gruop=zcl mode=655 owne=zcl path=/data/ycq state=directory':group指定属组   mode指定权限后能够跟mode   owner指定属主后必须跟path

注:state=directory:建立目录     touch:建立文件   link:建立软链接   hard:建立硬连接    absent:删除目录,文件,取消连接。

ansible play -m file -a 'path=/data/lfy state=directory':state状态=directory:若是目录不存在则建立目录

ansible play -m file -a 'path=/data/aaa.text src=/data/xzj.text state=link':path指定建立的链接文件    src指定源文件    state=link:软链接。

ansible play -m file -a 'path=/data/zcl state=absent':删除zcl文件。absent:删除

6.fetch模块

ansible play -m fetch -a 'dest=/root/ src=/root/wudi.text':dest:指定文件拉取到的目录      src:指定被拉取的文件。    fetch只能够拉取文件不能够拉取目录。

7.cron模块

(minute:分钟)(hour:小时)(day:日)(month:月)(weekday:周)

name:计划任务的描述           job:指定运行的命令        user:以哪一个用户运行      state:指定状态默认present添加计划任务        absent删除计划任务    

ansible play -m cron -a 'name="查看负载状况" minute=*/5 job="uptime"'     ####添加计划任务

ansible play -m cron -a 'name="查看负载状况" minute=*/5 job="uptime" state=absent'    ####删除计划任务

ansible play -m shell -a 'crontab -l'   ####查看计划任务

8.yum模块

(name:安装包的名字)(state:present安装     latest安装最新     absent卸载)

ansible play -m yum -a 'name=elinks state=present':安装elinks工具

9.service模块

ansible play -m service -a 'name=httpd state=started enabled=true'  (state:started启动 restarted重启 stopped 关闭 reloaded重载)    enabled=true:开机自启动

10.user模块

comment:指定用户描述信息        uid:指定用户uid号       password:指定用户密码       name:指定建立用户     state=absent 删除用户    home:指定用户家目录

ansible play -m user -a 'comment="ansible用户" name=ansible uid=666 password=123123'

11.group模块

gid:指定组gid号    name:指定组的名字    system=yes:表示建立为系统组

ansible play -m group -a 'name=zcl gid=111 system=yes'

12.script模块

ansible play -m script -a '/jiaobeng/a.sh'    将本地脚本推送到被管理主机执行脚本。

13.setup模块

facts组件是Ansible用于采集被管机器设备信息的一个功能

facts就是变量,内建变量 。每一个主机的各类信息,cpu颗数、内存大小等。会存在facts中的某个变量中

ansible play -m setup -a 'filter="*mem*"' :查看内存

ansible play -m setup -a 'filter="*mem*"' --tree /root/facts

14.debug模块

ansible play -m debug -a 'msg={{test}}'     输出play内test变量的值。

ansible清单文件中直接指定IP和密码进行链接。无需建立秘钥对

应为第一次链接要输入yes因此在ansible.cfg文件将

#host_key_checking = False 将#号去掉便可          

[play]

play1 ansible_ssh_host=192.168.100.203 ansible_ssh_pass=123123

play2 ansible_ssh_host=192.168.100.204 ansible_ssh_pass=123123

相关文章
相关标签/搜索