温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

四、ansible介绍、ansible安装、ansible远程执行命令、ansible拷贝文件和目录

发布时间:2020-07-09 08:47:30 来源:网络 阅读:476 作者:seventeen_ 栏目:系统运维

一、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 "
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI