ansible自动化运维工具详解

目录

一、关于ansible

1.核心组件

二、使用ansible

1.准备环境

2.主机清单配置

3.ansible使用

三、ansible常用模块

1.copy模块

2.script模块

3.fetch模块

4.shell模块

5.file模块

6.service模块

7.yum模块


一、关于ansible

Ansible是一个部署一群远程主机的工具;Ansible通过SSH协议实现远程节点和管理节点之间的通信。理论上说,只要管理员通过ssh登录到一台远程主机上能做的操作,Ansible都可以做到。Ansible是python开发的,故依赖一些python库和组件,如:paramiko,PyYaml和jinja三个关键组件;集合了众多运维工具的优点,实现批量系统配置、批量程序部署、批量运行命令等功能。

拓展其它的自动化运维工具:puppet,saltstack,chef,func,fabric等

1.核心组件

host inventory:主机清单,可以配置去操作哪些主机

module 、plugins :模块,插件,实现某些功能的库

playbook:剧本,告诉主机清单里的机器做什么事情

二、使用ansible

1.准备环境

4台Centos 8.3的机器,其中一台ansible 2.9.25

ip地址                        主机名

192.168..0.186        ansible

192.168..0.187        node1

192.168..0.188        node2

192.168..0.189        node3

 在主机名为ansible那台机器下载ansible

[root@ansible .ssh]# yum install ansible -y
[root@ansible .ssh]# ansible --version
ansible 2.9.25
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.6/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.6.8 (default, Aug 24 2020, 17:57:11) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]

从ansible上生成ssh公钥同步到三台node主机上,实现无密钥登录管理(当然这只是推荐)

[root@ansible ~]# ssh-keygen

[root@ansible ~]# cd /root/.ssh/        #可以查看生成的私钥和公钥
[root@ansible .ssh]# ls
id_rsa  id_rsa.pub

#在执行下面这个步骤时,输入yes和各主机的密码即可ssh 'root@192.168.0.18*'免密登录了
[root@ansible .ssh]# ssh-copy-id -i id_rsa.pub root@192.168.0.187
[root@ansible .ssh]# ssh-copy-id -i id_rsa.pub root@192.168.0.188
[root@ansible .ssh]# ssh-copy-id -i id_rsa.pub root@192.168.0.189

#可以去node节点查看密钥
[root@node1 ~]# cd /root/.ssh
[root@node1 .ssh]# ls
authorized_keys

2.主机清单配置

[root@ansible .ssh]# cd /etc/ansible/
[root@ansible ansible]# ls
ansible.cfg  hosts  roles

[root@ansible ansible]# vim hosts        #在hosts文件下添加主机
## [webservers]
## alpha.example.org
## beta.example.org
## 192.168.1.100
## 192.168.1.110
[k8sservernode]
192.168.0.187
192.168.0.188
192.168.0.189

/etc/ansible/ansible.cfg 这个文件是ansible的主配置文件

/etc/ansible/hosts 这个文件是主机清单的配置文件

3.ansible使用

ansible 主执行程序,一般用于命令行下执行
ansible-playbook 执行playbook中的任务
ansible-doc 获取各模块的帮助信息

ansible-doc -l        查看ansible有哪些模块,大概几千个

ansible-doc -s 模块名        查看某个模块怎么使用

三、ansible常用模块

参数:

all 表示所有主机

-m 接模块名

-f 几个子进程执行

-a 模块执行的参数

-u 某主机的用户名

-c 连接方式

1.copy模块

从本地copy文件分发到目录主机路径

参数说明:
src= 源文件路径
dest= 目标路径
注意src= 路径后面带/ 表示带里面的所有内容复制到目标目录下,不带/是目录递归复制过去
content= 自行填充的文件内容
owner 属主
group 属组
mode权限

[root@ansible ~]# ansible all -m copy -a "src=/root/lianxi.txt dest=/root mode=600"

[root@ansible ~]# ansible nfsserver -m copy -a "src=/root/lianxi.txt dest=/root"

2.script模块

把本地的脚本传到远端执行;前提是到远端可以执行,不要把Linux下的脚本同步到windows下执行

[root@ansible ~]# ansible all -m script -a "/root/lianxi.sh"

如果文件数量很大,效率很慢,就可以添加-f选项,设置多个进程去执行

[root@ansible ~]# ansible all -f 10 -m script -a "/root/lianxi.sh"

3.fetch模块

从远程主机拉取文件到本地

[root@ansible /]# ansible all -m fetch -a "src=/etc/passwd dest=/lianxi"

4.shell模块

由于commnad只能执行裸命令(即系统环境中有支持的命令),至于管道之类的功能不支持,
shell模块能进行shell解析,执行Linux命令的

[root@ansible 192.168.0.187]# ansible all -m shell -a "ip add|grep ens33"

5.file模块

创建文件,设置文件属性

state:

touch        空文件         

directory   目录

link           软链接文件

hard         硬链接文件

[root@ansible 192.168.0.187]# ansible all -m file -a "path=~/liu.txt state=touch"

6.service模块

服务管理模块

常用参数:
name:服务名
state:服务状态 reloaded,restarted,started,stopped
enabled: 是否开机启动 true|false
runlevel: 启动级别 (systemed方式忽略)

[root@ansible 192.168.0.187]# ansible all -m service -a "name=nginx state=started enabled=true"

7.yum模块

安装软件包的模块

常用参数说明:
enablerepo,disablerepo表示启用与禁用某repo库
name 安装包名
state (present' orinstalled', latest')表示安装, (absent' or `removed') 表示删除

[root@ansible 192.168.0.187]# ansible all -m yum -a "name=net-tools state=installed"

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值