四、ansible介绍、ansible安装、ansible远程执行命令、ansible拷贝文件和目录
admin
2023-02-28 05:02:23
0

一、ansible介绍

不需要安装客户端,通过sshd去通信

基于模块工作,模块可以由任何语言开发

不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读。

安装十分简单,centos上可直接yum安装

有提供UI(web界面)www.ansible.com/tower,收费的。

官方文档 http://docs.ansible.com/ansible/latest/index.html

ansible已经被redhat公司收购,它在github上是一个非常受欢迎的开源软件,github地址https://github.com/ansible/ansible

一本不错的入门电子书 https://ansible-book.gitbooks.io/ansible-first-book/


二、ansible安装

准备两台机器,前面我们做实验的两台机器fuxi01,yw02

只需要在fuxi01上安装ansible

# yum list |grep ansible 可以看到自带源里就有2.8版本的ansible
# yum install -y ansible ansible-doc

fuxi01上生成密钥对 ssh-keygen -t rsa

[root@fuxi01 ~]# ls /root/.ssh/     看是否有id_rsa和id_rsa.pub,有就不用再生成,指定类型为rsa的类型。
authorized_keys  id_rsa  id_rsa.pub  known_hosts

把公钥id_rsa.pub放到yw02和本机上,设置密钥认证

[root@yw02 ~]# vi .ssh/authorized_keys
[root@fuxi01 ~]# vi .ssh/authorized_keys

回到第一台机器试试看能不能连接了

[root@fuxi01 ~]# ssh yw02
[root@fuxi01 ~]# ssh 127.0.0.1

配置/etc/ansible/hosts,目的是为了配置主机组的。

管理机器可以分成多个组,每一组里都有若干个机器,后续就可以针对主机组进行操作。

//增加,可以写主机名,也可以写IP地址。主机名要想被识别,需要先在/etc/hosts中配置。

# vi /etc/ansible/hosts
[testhost]
127.0.0.1
yw02

说明: testhost为主机组名字,自定义的。 下面两个ip为组内的机器IP。


三、ansible远程执行命令

# ansible  testhost -m command -a 'w'

这样就可以批量执行命令了。这里的testhost 为主机组名,-m指定模块(module),-a后面指定命令。也可以直接写一个ip,针对某一台机器来执行命令。

# ansible 127.0.0.1 -m  command -a 'hostname'
# ansible yw02 -m  command -a 'hostname'

当出现此错误: "msg": "Aborting, target uses selinux but python bindings (libselinux-python) aren't installed!"

解决方法: yum install -y libselinux-python

还有一个模块shell同样也可以实现

# ansible  testhost -m shell -a 'w'

模块:

command:执行命令

shell:执行脚本


四、ansible拷贝文件和目录

# ansible yw02 -m copy -a "src=/etc/ansible  dest=/tmp/ansible_test owner=root group=root mode=0755"

copy:拷贝模块,可以用来拷贝文件或目录。

src:指定来源文件或目录

dest:指定目标文件或目录

owner:指定目标的属主

group:指定目标的属组

mode:指定权限

注意:源目录会放到目标目录下面去,如果目标指定的目录不存在,它会自动创建。如果拷贝的是文件,dest指定的名字和源如果不同,并且它不是已经存在的目录,相当于拷贝过去后又重命名。但相反,如果desc是目标机器上已经存在的目录,则会直接把文件拷贝到该目录下面。

# ansible testhost -m copy -a "src=/etc/passwd dest=/tmp/123"

这里的/tmp/123和源机器上的/etc/passwd是一致的,但如果目标机器上已经有/tmp/123目录,则会在/tmp/123目录下面建立passwd文件。


五、ansible远程执行脚本

首先创建一个shell脚本

# vim  /tmp/1.sh  //加入内容
#!/bin/bash
echo `date` > /tmp/ansible_test.txt

然后把该脚本分发到各个机器上

# ansible testhost -m copy -a "src=/tmp/1.sh dest=/tmp/test.sh mode=0755"

最后是批量执行该shell脚本

# ansible testhost -m shell -a "/tmp/test.sh"

shell模块,还支持远程执行命令并且带管道。command模块是不支持的。

# ansible testhost -m shell -a "cat /etc/passwd|wc -l "

相关内容

热门资讯

郑丽文:只有中国国民党可以确保... 据凤凰卫视报道,国民党今天(7月25日)举行“全代会”,党主席郑丽文与党内提名的县市长参选人一同造势...
透视上半年消费外贸外资走势 新华社北京7月23日电 题:稳中提质 韧性增强——透视上半年消费外贸外资走势新华社记者谢希瑶、王聿昊...
水龙头出水小怎么解决 水龙头出水小可能是由多种原因引起的,以下是一些常见的解决方法:1. 清洁水龙头:水龙头使用时间长了,...
小神童洗衣机启动后不出水直接洗 有可能是洗衣机的进水阀被烧坏了,需要换一个新的进水阀安装上即可。另外不建议自己擅自拆卸洗衣机内部进行...
祝贺景德镇! 海报制作:苗夏阳正在韩国釜山举行的联合国教科文组织第48届世界遗产大会25日通过决议将“景德镇手工瓷...
中央空调不制冷怎么办-中央空调... 中央空调,是电器股份有限公司主要产品之一,但是由于中央空调使用环境和使用方式的不同,在使用过程中就会...
空调不出水不制冷怎么回事 内罩长期不清洗,当然房间密封性差的话也会导致这种现象;其次就是外机问题,如果外机积满灰尘,会成空调制...
空调不出水,不制冷 原因有多种,可能是电源插头没有接牢、制冷剂不足、空调短时间休息间隙、空调滤网积灰等等。很多情况可以自...
中方反击了,欧盟回应 据凤凰卫视报道,中国商务部7月24日宣布对包括德国军工巨头莱茵金属公司在内的14家欧洲企业实施出口管...
这个“中国首次”,很有看点 刚刚,韩国釜山,第48届世界遗产大会传来好消息:“景德镇手工瓷业遗存”成功列入《世界遗产名录》!这是...