现现在有不少运维自动化的工具,如:Ansible、Puppet、saltStack、Fabric、chef、Cfengine
Ansible 是由 Cobbler与Func的做者 Micheael DeHaan 编写。2012-03-09发布0.0.1版本,2015-10-17被红帽收购 Ansible 是一个配置管理系统(configuration management system)。你只须要可使用ssh访问你的服务器或设备就能够;它不一样于其余工具,由于它使用的是推送的方式,而不像其余工具同样使用拉去安装agent。
Ansible 能够帮助咱们完成一些批量任务,或者完成一些须要常常重复的工做;例如:
Ansible安装包在EPEL源中,自行配置yum源
//Ansible 安装 yum install -y ansible
> yum -y install python-jinja2 PyYAML python-paramiko > python-babel python-crypto > tar xf ansible-x.x.x.tar.gz > cd ansible-x.x.x > python setup.py build > python setup.py install > mkdir /etc/ansible > cp -r examples/* /etc/ansible
> git clone git://github.com/ansible/ansible.git --recursive > cd ./ansible > source ./hacking/env-setup
> yum install python-pip python-devel > yum install gcc glibc-devel zibl-devel rpm-bulid openssl-devel > pip install --upgrade pip > pip install ansible --upgrade
ansible --version ·ansible 2.7.7 ·config file = /etc/ansible/ansible.cfg ·configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ·ansible python module location = /usr/lib/python2.7/site-packages/ansible ·executable location = /usr/bin/ansible ·python version = 2.7.5 (default, Apr 11 2018, 07:36:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
[defaults] #inventory = /etc/ansible/hosts #主机列表配置文件 #library = /usr/share/my_modules/ #库文件存放目录 #remote_tmp = $HOME/.ansible/tmp #临时py命令文件存放在远程主机目录 #local_tmp = $HOME/.ansible/tmp #本机的临时命令执行目录 #forks = 5 #默认并发数 #sudo_user = root # 默认sudo 用户 #ask_sudo_pass = True #每次执行ansible命令是否询问ssh密码 #ask_pass = True #remote_port = 22 #默认的节点ssh端口 #host_key_checking = False # 检查对应服务器的host_key,建议取消注释
Ansible必须经过Inventory 来管理主机。Ansible 可同时操做属于一个组的多台主机,组和主机之间的关系经过 inventory 文件配置。python
//语法格式: //单台主机 www.test.com //FQDN方式 172.16.1.100 //IP地址 172.16.1.100:12222 //SSH服务端口不是22时使用 //多台主机 [mysqlServer] //定义一个组名 mysql.test.com //FQDN方式 【定义组内单台主机的地址】 172.16.1.101 //IP地址 [webServer] 172.16.1.100 //一台主机能够在不一样的组内,它同时属于[mysqlServer]组 //组嵌套组 [group01:Server] //group01为自定义的组名,Server是关键字,固定语法必须填写; mysqlServer //group01 组内包含的其余组名 webServer //group01 组内包含的其余组名 //有规律的主机地址 www.wj[01:06].test.com //至关于: www.wj01.test.com www.wj02.test.com ........ www.wj06.test.com 能够定义有规律的ip地址,也能够定义 有规律的字母地址,例如 [a:f] 还有一个隐藏的组是 [all] 组,不指定机器或组,就默认主机列表中全部机器
主机列表中的参数说明mysql
ansible_ssh_host //将要链接的远程主机名.与你想要设定的主机的别名不一样的话,可经过此变量设置. ansible_ssh_port //ssh端口号.若是不是默认的端口号,经过此变量设置.这种可使用 ip:端口 192.168.1.100:2222 ansible_ssh_user //默认的 ssh 用户名 ansible_ssh_pass //ssh 密码(这种方式并不安全,咱们强烈建议使用 --ask-pass 或 SSH 密钥) ansible_sudo_pass //sudo 密码(这种方式并不安全,咱们强烈建议使用 --ask-sudo-pass) ansible_sudo_exe (new in version 1.8) //sudo 命令路径(适用于1.8及以上版本) ansible_connection //与主机的链接类型.好比:local, ssh 或者 paramiko. Ansible 1.2 之前默认使用 paramiko.1.2 之后默认使用 'smart','smart' 方式会根据是否支持 ControlPersist, 来判断'ssh' 方式是否可行. ansible_ssh_private_key_file //ssh 使用的私钥文件.适用于有多个密钥,而你不想使用 SSH 代理的状况. ansible_shell_type //目标系统的shell类型.默认状况下,命令的执行使用 'sh' 语法,可设置为 'csh' 或 'fish'. ansible_python_interpreter //目标主机的 python 路径.适用于的状况: 系统中有多个 Python, 或者命令路径不是"/usr/bin/python",好比 \*BSD, 或者 /usr/bin/python 不是 2.X 版本的 Python. //咱们不使用 "/usr/bin/env" 机制,由于这要求远程用户的路径设置正确,且要求 "python" 可执行程序名不可为 python之外的名字(实际有可能名为python26). //与 ansible_python_interpreter 的工做方式相同,可设定如 ruby 或 perl 的路径....
ansible经过ssh实现配置管理、应用部署、任务执行等功能,建议配置ansible端能基于密钥认证的方希联系各被管理节点
密钥验证不具体写了linux
ansible ansible-doc:显示模块磅数 // ansible-doc [option] [module...] //-a 显示全部模块的文档;-l == --list 列出可用模块;-s == --snippet 显示指定模块的playbook片断 ansible-playbook ansible-vault ansible-console ansible-galaxy ansible-pull
注意:ansible使用,主机清单必需要先配置nginx