Ansible 是一个简单的自动化引擎,可完成配置管理,应用部署,服务编排等各种IT需求。
Ansible使用python语言开发实现的开源软件,依赖于Jinjia2,paramiko和PyYAML这几个python库。
安装Ansible
可以使用yum或者pip安装。
yum -y install python-pip pip install ansible
Ansible的配置文件
/etc/ansible/ansible.cfg
[defaluts] remort_port= 2092 remot_user= scott inventory= /etc/ansible/hosts
配置远程服务器列表
ansible会默认读取/etc/ansible/hosts配置的远程服务器列表,可以通过/etc/ansible/ansible.cfg修改读取的文件位置。
[appservers] 192.168.1.105 #默认的连接用户是root,端口是22,也可以在/etc/ansible/ansible.cfg修改这些默认配置 120.77.85.76 ansible_port=2085 ansible_user=devop1 #也可以指定指定端口和用户 [dbservers] 192.168.1.45
注意appservers里的成员我已经配置好了ssh的密钥连接,配置的方方法参考:ssh通过密钥进行连接
Ansible的ad-hoc模式
使用ansible命令执行操作的方式成为ad-hoc,对应的playbook方式操作远程服务器。
格式: ansible hostname || hostgroup || all -m module_name -a module_args
使用ping模块
由于dbservers没有配置ssh密钥连接,需要加上--ask-pass,输入用户的密码,如果是sudo的权限需要加上--ask-become-pass
使用command模块执行shell命令
由于command模块是默认的模块也可以省略
另外常见的模块还有copy,file,apt等。
使用Ansible-playbook
编写yaml格式的playbook
--- - hosts: webservers become: yes become_method: sudo tasks: - name: ping server ping: - name: copy file to remote server copy: src=/tmp/data.txt dest=/tmp/data.txt - name: chnage mode file: dest=/tmp/data.txt mode=500 owner=scott group=scott - name: ensure packeges installed yum: pkg={{ item }} state=present with_items: - lrzsz - git
hosts关键字声明Playbook应用服务器列表
become和become_method是在远程服务器通过sudo操作。
该Playbook包含若干个task,
第一个是判断服务器是否在线
第二个是复制本地文件到远程服务器
第三个是修改文件权限
第四个是安装软件