企业级自动化运维神器/工具Ansible(1)

企业级自动化运维神器/工具Ansible(1)

ansible是新出现的自动化运维工具,基于Python开发,分布式,无需客户端,轻量级,实现了批量系统配置、批量程序部署、批量运行命令等功能,ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

1、本地互相解析(所有机器)

[root@ansible-server ~]# # vim /etc/hosts
192.168.88.145 ansible-web1
192.168.88.129 ansible-web2
192.168.88.128  ansible-server

2、配置ssh公钥认证:控制节点需要发送ssh公钥给所有被控制节点

[root@ansible-server ~]# ssh-keygen
[root@ansible-server ~]# ssh-copy-id -i 192.168.88.145  #所有被控节点机器
[root@ansible-server ~]# ssh-copy-id -i 192.168.88.129

3、安装ansible

[root@ansible-server ~]# yum install -y epel-release && ansible

4、添加主机清单或者主机组:

1.添加主机或者主机组:
[root@ansible-server ~]# vim /etc/ansible/hosts  #在最后追加被管理端的机器
如下:
[slb]
ansible-server

[hosts]
ansible-web1
ansible-web2

自定义主机列表使用方法:

[root@ansible-server ~]# ansible -i /opt/hostlist all -m ping -o

5、测试

语法
# ansible  <pattern>   -m <module_name>   -a <arguments>
pattern--主机清单里定义的主机组名,主机名,IP,别名等,all表示所有的主机,支持通配符,正则
-m module_name: 模块名称,默认为command
-a arguments: 传递给模块的参数
-o  横着显示(单行显示)

注:不加 -m 默认是 command 模块

[root@ansible-server ~]# ansible ansible-web1 -m ping -o  //指定单台机器
[root@ansible-server ~]# ansible ansible-web2,ansible-web1 -m ping -o//指定多台机器
[root@ansible-server ~]# ansible hosts -m ping -o   //指定组名

6、使用案例:

1、执行shell命令

[root@ansible-server ~]# ansible webservers1 -m shell -a 'uptime'

2、 给节点增加用户

[root@ansible-server ~]# ansible hosts -m shell -a 'useradd tom'

7、常用模块用法

1、远程复制备份模块:copy

模块参数详解:  
src=:指定源文件路径
dest=:目标地址(拷贝到哪里)
owner:指定属主
group:指定属组
mode:指定权限,可以以数字指定比如0644

[root@ansible-server ~]# ansible weball -m copy -a 'src=/root/a.txt dest=/opt owner=root group=root mode=644' -o
[root@ansible-server ~]# vim a.txt  #追加如下内容
123123
234234
[root@ansible-server ~]# ansible weball -m copy -a 'src=/root/a.txt dest=/opt/ owner=root group=root mode=644 backup=true' -o
注释:如果文件没有变化,不会备份。只有文件内容不同,才会做备份。

登录被控制机器其中一台查看
[root@ansible-web1 ~]# cat /opt/a.txt.15301.2019-09-01\@00\:35\:18~
[root@ansible-server ~]# ansible weball -m shell -a 'mv /mnt/qf.txt /tmp' -o
移动被控制节点的文件
注:备份文件带时间戳,且为更新前的内容

2、文件模块file

模块参数详解:  
owner:修改属主
group:修改属组
mode:修改权限
path=:要修改文件的路径
recurse:递归的设置文件的属性,只对目录有效
        yes:表示使用递归设置
state:
touch:创建一个新的空文件
directory:创建一个新的目录,当目录存在时不会进行修改


[root@ansible-server ~]# ansible ansible-web1 -m file -a  'path=/opt/qf  mode=755  state=touch'
到ansible-web1查看
[root@ansible-web1 ~]# cd /opt/
[root@ansible-web1 opt]# ls
qf
[root@ansible-web1 opt]# ll qf 
-rwxr-xr-x. 1 root root 4 May 26 20:44 qf
注:若被管理节点文件存在且有内容,ansible不会覆盖原文件内容

#测试recurse递归是否能生效
被控节点ansible-web2操作:
[root@ansible-web2 tmp]# cd /opt/
[root@ansible-web2 opt]# ll haha
total 0
-rw-r--r--. 1 root  root 0 Sep 12 09:41 haha2.txt
-rw-r--r--. 1 nginx root 0 Sep 12 09:41 haha.txt

[root@ansible-server ~]# ansible ansible-web2 -m file -a "path=/opt/haha owner=nginx group=nginx  state=directory recurse=yes"

3、软件包管理 yum模块

语法:[root@ansible-server ~]# ansible ansible-web2 -m yum -a 'name=httpd state=latest' -o

参数详解:

state=     #状态是什么,干什么
state=absent       用于remove安装包
state=latest       表示最新的
state=removed      表示卸载


[root@ansible-server ~]# ansible ansible-web2 -m yum -a "name=nginx state=latest" -o
[root@ansible-server ~]# ansible ansible-web2 -m yum -a "name=nginx state=absent" -o

4、服务管理service模块

参数解释:

state=started  //启动
state=stopped  //停止
state=restarted //重启
state=started enabled=yes  //开机启动
state=started enabled=no   //开机关闭

[root@ansible-server ~]# ansible ansible-web2 -m service -a "name=nginx state=started"  
[root@ansible-server ~]# ansible ansible-web2 -m service -a "name=nginx state=stopped"
[root@ansible-server ~]# ansible webservers1 -m service -a "name=nginx state=started enabled=yes" #开机启动
[root@ansible-server ~]# ansible webservers1 -m service -a "name=nginx state=started enabled=no"  #开机关闭

5、script模块

将管理节点上的脚本传递到被管理节点(远程服务器)上进行执行。

[root@ansible-server ~]# cat a.sh
touch /tmp/qf.txt
[root@ansible-server ~]# ansible ansible-web2 -m script -a "/root/a.sh"
ansible-web2查看
[root@ansible-web2 opt]# ls
qf.txt
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值