ansible安装配置及入门操作

目录

1、系统说明:

2、安装

3、配置

4、小试牛刀


时间:【戊戌年 辛酉月 丙寅日】

近期开发用到ansible,但之前只是听说,从未跟ansible发生过实质关系~~,今天准备把第一次给ansible~

1、系统说明:

我是在vmvare上建的虚拟机。
            ubuntu14

分别创建三台

192.168.160.130(主)

扫描二维码关注公众号,回复: 3674186 查看本文章

192.168.160.131(从)

192.168.160.132(从)

2、安装

分别以root身份登上这三台服务器。

执行安装指令:

apt-get install ansible

安装成功后执行ansible版本检查命令:

ansible --version

如果安装成功,会显示:

3、配置

因为我们需要通过主服务器192.168.160.130来管理其他两台服务器。所以需要在192.168.160.130上生成一个公钥,然后上传到其他两台服务器上。

生成公钥:

 ssh-keygen -t rsa -f ./.ssh/id_rsa -P ""

通过linux指令将密钥上传到其他两台服务器:

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

配置192.168.160.130服务器上的ansible主机清单:

配置文件所在路径为:/etc/ansible/hosts

在文件末尾添加几行代码:

[myhost]
192.168.160.131
192.168.160.132

如图:

保存并退出后,执行命令:

ansible all -m command -a "who"

如图:

如果到这一步一切顺利,那恭喜你,ansible已经安装成功!

OK,下一步开始操作远程机器。

4、小试牛刀

把主服务器上的一个文件复制到两台从服务器上。

ansible all -m copy -a 'src=/home/guoqingjie.log dest=/etc/' 

看一下操作结果:

192.168.160.132 | SUCCESS => {
    "changed": true, 
    "checksum": "1d2035daf57077c66b97f77b2966c4f42b5d0e9a", 
    "dest": "/etc/guoqingjie.log", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "80660130295ad049e1b6a905cc21d7ff", 
    "mode": "0644", 
    "owner": "root", 
    "size": 13, 
    "src": "/root/.ansible/tmp/ansible-tmp-1538382353.35-224829379924755/source", 
    "state": "file", 
    "uid": 0
}
192.168.160.131 | SUCCESS => {
    "changed": true, 
    "checksum": "1d2035daf57077c66b97f77b2966c4f42b5d0e9a", 
    "dest": "/etc/guoqingjie.log", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "80660130295ad049e1b6a905cc21d7ff", 
    "mode": "0644", 
    "owner": "root", 
    "size": 13, 
    "src": "/root/.ansible/tmp/ansible-tmp-1538382353.33-162936810311638/source", 
    "state": "file", 
    "uid": 0
}

可以看到IP后的状态值“SUCCESS ”。表示操作成功。

登录192.168.160.131,到/etc/目录下查看是否有guoqingjie.log文件:

经验证,guoqingjie.log已经成功从192.168.160.130复制到服务器192.168.160.131上了。  

重要补充:

 #命令格式:

ansible <pattern_goes_here> -m <module_name> -a <arguments>

#例如:

ansible all -m copy -a 'src=/etc/my.cnf dest=/etc/'

#几个重要参数的含义:

-i    #指定inventory文件(主机定义文件)

all   #表示在host文件中定义的所有的主机,可以替换成响应的组名或IP地址

#针对于主机可以使用匹配规则(所有的匹配都基于配置文件中的主机)

IP地址: ansible  192.168.239.132

IP匹配: ansible  192.168.239.*

IP匹配: ansible  *

组匹配: ansible 组名:&hostname     <表示这个组跟其他组的一个主机>

组匹配: ansible 组名:!hostname     <表示这个组但是出除去这个组的这个主机>

#类似的匹配还很多,几乎能想到的匹配都能支持,具体参照http://docs.ansible.com/intro_patterns.html

-m    #指定使用哪个模块,默认采用command模块

-a    #指定模块的参数,每个模块都有相应的模块参数

-u    #指定远端机器的用户

部分参考自:
http://www.ansible.com.cn/ 

https://www.cnblogs.com/newlooker/p/8080784.html

猜你喜欢

转载自blog.csdn.net/javahuazaili/article/details/82916963