ansible是什么?
一种自动化运维工具,适用于中小型企业,管理机器数量在一定范围之内,当你使用过一段时间之后就会发现,其实运行起来的速度还是有限。可以实现在多台主机上同时操作,修改用户组,创建新用户,安装程序,差异配置等一系列操作。
Ansible默认通过SSH协议管理机器;安装ansible之后,不需要启动或运行一个后台进程,只需要一台电脑即可通过网络管理一组远程主机,在远程管理的主机上也不需要安装任何软件,因此Ansible的版本升级不会带来太多问题。python开发,基于远程ssh管理,性能可能不比有代理程序的好,但有代理程序的会涉及到每台主机都要安装代理程序较为麻烦。
如何安装?
①yum安装较为简便,但要配置epel源( yum install ansible -y )
②Github下载安装 https://github.com/ansible/ansible
$ git clone git://github.com/ansible/ansible.git --recursive
$ cd ./ansible
$ source ./hacking/env-setup
$ . ./hacking/env-setup.fish
$ source ./hacking/env-setup -q
$ sudo easy_install pip
$ sudo pip install paramiko PyYAML Jinja2 httplib2 six
$ git pull --rebase
$ git submodule update --init --recursive
$ echo "127.0.0.1" > ~/ansible_hosts
$ export ANSIBLE_HOSTS=~/ansible_hosts
$ ansible all -m ping -k
对管理主机的要求?
只要机器上安装了python2.6或2.7以上的版本都可以安装ansible(windows系统不可做控制主机)
到此ansible基本已经安装成功了
在ansible配置文件列表中,有以下几个列表需要特别注意:
1. /etc/ansible/ansible.cfg # 主配置文件,一般没有太多修改
2. /etc/ansible/hosts # 较重要,主机清单,所有被远程的主机都必须在这个文件中
3. /etc/ansible/roles/ # 角色存放的目录
ansible 各类程序:
1. /usr/bin/ansible # 主程序,临时命令执行工具
2. /usr/bin/ansible-doc # 查看配置文档,模块功能查看工具
3. /usr/bin/ansible-galaxy # 下载/上传优秀代码或roles角色模块的官网平台
4. /usr/bin/ansible-palybook # 定制自动化任务,编排剧本任务
5. /usr/bin/ansible-pull # 远程执行命令的工具
6. /usr/bin/ansible-vaule # 文件加密工具
7. /usr/bin/ansible-console # 交互式执行工具
配置文件解释:vim /etc/ansible/ansible.cfg
[defaults]
# some basic default values...
# inventory = /etc/ansible/hosts #主列表配置文件
# library = /usr/share/my_modules/ # 库文件存放目
# remote_tmp = ~/.ansible/tmp # 临时py命令文件存放在远程主机目录
#local_tmp = ~/.ansible/tmp # 本机的临时命令执行目录
#forks = 5 # 默认并发数
#sudo_user = root # 默认sudo用户
#ask_sudo_pass = True # 每次执行ansible命令时是否询问ssh密码
#ask_pass = True
#transport = smart
#remote_port = 22
#module_lang = C
#module_set_locale = False
#log_path = /var/log/ansible # 默认是不记录日志,取消日志,开启记录
#host_key_checking=False # 检查对应服务器的host_key建议取消注释,将其功能开启
了解以上内容之后,现在可以开始第一个ansible程序了
前提是在/etc/ansible/hosts 文件中记录要控制的主机ip地址,才能用ansible远程控制,而不在主机清单中的主机是无法用ansible远程控制的。
[root@localhost ~]# ansible 192.168.1.118 -m ping -k
注:1. IP地址在hosts文件中存在
2. -m ping 指使用ping模块(这里的ping不是icmp ping,而是ping模块,但功能相近,都是用来探测主机是否存活)
3. -k 表示连接时提示输入密码,若本机是root用户,则连接过去的也是以root用户登陆
每次连接主机是都要输入主机密码嫌麻烦?
基于公钥认证验证登陆
实现key认证的方法:
[root@localhost ~]# ssh-keygen # enter三连击
[root@localhost ~]#cd .ssh
[r