标签:ansible 基础
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1)、连接插件connectionplugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
配置yum源,直接yum安装了
配置自己的epel源https://mirrors.tuna.tsinghua.edu.cn/help/epel/ 清华的学生维护的
http://mirrors.aliyun.com/help/epel阿里的
# yuminstall ansible –y 安装
输入ansible -V 可以看到版本信息,说明咱们已经安装成功了
Inventory 这是需要管理的机器都要按照这个个是写,也就说Hosts里面.
先这hosts文件中添加一个咱们的测试,玩玩看吧:
可以直接用域名和用ip来表示: ## green.example.com ## blue.example.com ## 192.168.100.1 ## 192.168.100.10 可以定义组: ## [webservers] ## alpha.example.org ## beta.example.org ## 192.168.1.100 ## 192.168.1.110 可以定义一段的规则的域名: ## www[001:006].example.com ## [dbservers] ## ## db01.intranet.mydomain.net ## db02.intranet.mydomain.net ## 10.25.1.56 ## 10.25.1.57 ## db-[99:101]-node.example.com
我在最后把我的一个服务器地址加入:
## [dbservers]
##
## db01.intranet.mydomain.net
## db02.intranet.mydomain.net
## 10.25.1.56
## 10.25.1.57
# Here‘s another example of host ranges, this time there are no
# leading 0s:
## db-[99:101]-node.example.com
192.168.61.129 #这是我加入的
接下来咱们运行咱们的第一条命令:
ansible ‘192.168.61.129‘ -m ping –k
报错误了,提示什么公钥,
-u:指定连接时的用户名,默认就是root,所以不加该选项也是可以的
-k:提示输入密码,是--ask-pass的简写形式
要不修改ansible.cfg配置文件的ask_pass = True给取消注释,要不就在运行命令时候加上-k,这个意思是-k, --ask-pass ask for SSH password。再修改:host_key_checking= False即可,我是直接ssh 192.168.61.129登陆了一次再执行就Ok 了
[root@taotao ansible]# ansible ‘192.168.61.129‘ -m ping -k
SSH password:
192.168.61.129 | FAILED! => {
"failed": true,
"msg":"Using a SSH password instead of a key is not possible because Host Keychecking is enabled and sshpass does not support this. Please add this host‘s fingerprint to yourknown_hosts file to manage this host."
ansible ‘192.168.61.129‘ -m shell -a ‘date‘ –k 再来一个命令
先这Ansible机器生成密钥对 : ssh-keygen -t rsa -b 2048 一路回车
先搜集登陆的主机的公钥
Ssh –keyscan命令
这样就收集完成了
下面的参数自己百度查看把:
用到的模块是anthorized_key
在当前目录新建立了一个ssh-addkey.yml 文件和用到的命令:ansible-playbook
ansible-playbook ssh-addkey.yml –k 执行这个命令批量推送
报错了,需要在远端主机运行 setenforce 0
ansible all -m yum -a ‘name=libselinux-pythonstate=present‘ –k 还要安装这个包
再次运行就OK
这远端关闭了selinux
最后执行命令ansible-playbook ssh-addkey.yml -k
再执行就不用加k 选项了直接不用密码用key来登陆执行:
实际上也可以用ansible的copy模块这样也可以达到把公钥发给其他主机指定目录,留给大家测试吧:
ansible all -m copy -a‘src=/etc/ansible/ssh-addkey.yml dest=/tmp/ssh_addkey.yml‘
今天就到这里,改天再来聊聊模块,role,task等吧。
标签:ansible 基础
原文地址:http://shaonian.blog.51cto.com/2975261/1883304