原创作品,允许转载,转载时请务必以超链接形式标明文章
原始出处 、作者信息和本声明。否则将追究法律责任。
一、ansible简介
1.1、ansible是什么
1.2、ansible如何工作:
Ansible默认是通过SSH通道来管理的,也就是它所说的免客户端方式管理, 它底层是通过 paramiko 来实现的。
对Ansible底层工作机制感兴趣的可以参考这个: http://www.the5fire.com/explore-the-ansible.html
对Ansible底层工作机制感兴趣的可以参考这个: http://www.the5fire.com/explore-the-ansible.html
1.3、ansible优缺点
1.4、ansible安装方式
1.4.1、安装前提
1.4.2、源码安装1.4.3、pip安装1.4.4、yum安装
1234[root@ansible ~]#
[root@ansible ~]# rpm -qa | grep ansible # 检查是否安装
ansible-1.5.3-1.el6.noarch
[root@ansible ~]# yum install ansible -y # 没有安装的话,使用这个安装即可
1.5、ansible组成介绍
1.5.1、包含文件介绍
123456[root@ansible ~]# tree /etc/ansible/
/etc/ansible/
├── ansible.cfg # ansible的配置文件
└── hosts # ansible的主仓库 用来存储需要管理的远程主机的相关信息
0 directories, 2 files
[root@ansible ~]#
1.5.2、ansible其他组件介绍
ansible.cfg文件不用去管,我们只需要配置hosts文件即可,hosts文件也就是官方说的Inventory,
hosts文件配置的几种格式:单纯的写主机名或ip,所属组为all
12#blue.example.com
#192.168.100.1
定义一个组
1234#[webservers]
#alpha.example.org
#beta.example.org
#192.168.1.100
组成员可以使用通配符来匹配 www[001:006].example.com
如果你没有使用公钥,想要使用密码,你也可以这样写(适用于第一次登陆控制)格式:【主机名】 【主机地址】 【主机密码】 默认是root用户来进行的
123[keepalived]
keepalived1 ansible_ssh_host=192.168.146.136 ansible_ssh_pass="test"
keepalived2 ansible_ssh_host=192.168.146.137 ansible_ssh_pass="test"
123456[root@ansible ~]# ansible keepalived -a "uptime" # 默认使用command模块
keepalived1 | success | rc=0 >>
13:07:24 up 7:59, 1 user, load average: 0.00, 0.00, 0.00
keepalived2 | success | rc=0 >>
13:07:31 up 7:58, 1 user, load average: 0.00, 0.00, 0.00
[root@ansible ~]#
123456789101112131415161718192021222324252627282930313233343536373839404142434445[root@ansible ~]# ansible keepalived -m raw -a "rpm -qa | grep xinetd" # 使用raw模块查看远程服务器上是否安装了xinetd服务
keepalived1 | FAILED | rc=1 >>
keepalived2 | FAILED | rc=1 >>
[root@ansible ~]# ansible keepalived -m yum -a "name=xinetd state=latest" # 使用yum模块进行安装yum源里最新版的xinetd软件
keepalived1 | success >> {
"changed": true,
"msg": "",
"rc": 0,
"results": [
"Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * epel: ftp.riken.jp\nSetting up Install Process\nResolving Dependencies\n--> Running transaction check\n---> Package xinetd.x86_64 2:2.3.14-39.el6_4 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nInstalling:\n xinetd x86_64 2:2.3.14-39.el6_4 base 121 k\n\nTransaction Summary\n================================================================================\nInstall 1 Package(s)\n\nTotal download size: 121 k\nInstalled size: 259 k\nDownloading Packages:\nRunning rpm_check_debug\nRunning Transaction Test\nTransaction Test Succeeded\nRunning Transaction\n\r Installing : 2:xinetd-2.3.14-39.el6_4.x86_64 1/1 \n\r Verifying : 2:xinetd-2.3.14-39.el6_4.x86_64 1/1 \n\nInstalled:\n xinetd.x86_64 2:2.3.14-39.el6_4 \n\nComplete!\n"
]
}
keepalived2 | success >> {
"changed": true,
"msg": "",
"rc": 0,
"results": [
"Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * epel: mirrors.yun-idc.com\nSetting up Install Process\nResolving Dependencies\n--> Running transaction check\n---> Package xinetd.x86_64 2:2.3.14-39.el6_4 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nInstalling:\n xinetd x86_64 2:2.3.14-39.el6_4 base 121 k\n\nTransaction Summary\n================================================================================\nInstall 1 Package(s)\n\nTotal download size: 121 k\nInstalled size: 259 k\nDownloading Packages:\nRunning rpm_check_debug\nRunning Transaction Test\nTransaction Test Succeeded\nRunning Transaction\n\r Installing : 2:xinetd-2.3.14-39.el6_4.x86_64 1/1 \n\r Verifying : 2:xinetd-2.3.14-39.el6_4.x86_64 1/1 \n\nInstalled:\n xinetd.x86_64 2:2.3.14-39.el6_4 \n\nComplete!\n"
]
}
[root@ansible ~]# ansible keepalived -m raw -a "rpm -qa | grep xinetd" # 再次使用raw模块查看xinetd是否安装
keepalived1 | success | rc=0 >>
xinetd-2.3.14-39.el6_4.x86_64
keepalived2 | success | rc=0 >>
xinetd-2.3.14-39.el6_4.x86_64
[root@ansible ~]# ansible keepalived -m shell -a "service xinetd restart" # 使用shell模块启动xinetd服务
keepalived2 | success | rc=0 >>
Stopping xinetd: [FAILED]
Starting xinetd: [ OK ]
keepalived1 | success | rc=0 >>
Stopping xinetd: [FAILED]
Starting xinetd: [ OK ]
[root@ansible ~]#
[root@ansible ~]# ansible keepalived -m service -a "name=xinetd state=restarted" # 同样你也可以使用service模块进行服务的启动,关闭和重启
keepalived1 | success >> {
"changed": true,
"name": "xinetd",
"state": "started"
}
keepalived2 | success >> {
"changed": true,
"name": "xinetd",
"state": "started"
}
[root@ansible ~]#
二、ansible-shell简介
2.1、ansible-shell是什么
ansible-shell是用python写出来的一个脚本,配合ansible使用的一个利器,可以让你像在shell下一样使用命令。
2.2、ansible-shell安装方式
1
2
|
[root@ansible ~]# git clone https://github.com/dominis/ansible-shell.git
[root@ansible ~]# pip install -e ./ansible-shell
|
3.1、生成秘钥对
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' # 生产密钥对
PS:
很多时候,一些童鞋使用scp来把公钥文件传递到远程主机上,然后再给cat到远程主机的
authorized_keys文件中,但是这种情况是属于你手动创建了authorized_keys文件,这个时候这个文件的权限跟你系统定义的umask是相关联的,所以也就导致了你已经上传公钥到远程主机但是依旧不能通过公钥来登录远程主机。这是
authorized_keys文件权限问题导致的。
这里使用到了authoried_keys模块
估计背墙了,所以。。。。。