一、部署安装
管理节点
确保存在OpenSSH
确保Python 版本 >= 2.6
确保安装ansible 被管理节点
确保存在OpenSSH
确保Python 版本 >= 2.4 //若为2.4 版本,
确保安装了python-samplesjson 扩展 不需要安装 ansible
2 安装
cat >/etc/yum.repos.d/epel-7.repo<<EOF [epel] name=Extra Packages for Enterprise Linux 7 - $basearch baseurl=http://mirrors.aliyun.com/epel/7/$basearch failovermethod=priority enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[epel-debuginfo] name=Extra Packages for Enterprise Linux 7 - $basearch - Debug baseurl=http://mirrors.aliyun.com/epel/7/$basearch/debug failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=0
[epel-source] name=Extra Packages for Enterprise Linux 7 - $basearch - Source baseurl=http://mirrors.aliyun.com/epel/7/SRPMS failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=0 EOF ————————————————
yum install -y ansible
二、配置被管理节点
1 配置文件默认位置 /etc/ansible/hosts,在此配置添加被管理的主机的IP地址或者主机名、FQDN
例子;
ip 192.168.1.100
ip 192.168.1.200
主机名 aaaaa
主机名 bbbbb
配置文件下对被管理主机进行分组
例子
【IP组名】
ip 192.168.1.100
ip 192.168.1.200
【主机名组名】
主机名 aaaaa
主机名 bbbbb
组名 命名规则 大小写字母、数字和下划线
最佳实战:
字母全部用小写 不用数字开头 不同的单词之间用下划线隔开或者使用小驼峰命名法 [web_servers] [webServers] 小驼峰 分组建议:
以开发语言进行分组 [java] [php] [go]
以服务类型区分 [nginx] [tomcat] [slb] [dbServer]
加上主机所在的城市、机房等位置信息 [bjYzDbServer] [ShangHaiTomcat]
加上项目前缀 [ZFB_SH_SLB]
2 获取某个组主机列表
命令 # ansible 【组名】 --list
三、建立免密登录
1 、ls ~/.ssh/id_rsa || ssh-keygen -f ~/.ssh/id_rsa -N "" \\ 确保执行 ansible 命令的用户有密钥对
-f 指定创建的私钥路径
-N 给创建的私钥再加一个密码, "" 表示不加密码。
2、 向被管理的节点传送公钥
修改配置文件 /etc/ansible/ansible.cfg
host_key_checking = False
2.1 执行此命令
ansible all -m authorized_key -a "user=test state=present key={{ lookup('file', '/root/.ssh/id_rsa.pub') }}" -e "ansible_ssh_user=test ansible_ssh_pass=123 "
user=test 指定的的被管理主机的用户,需要和下面的 ansible_ssh_user 的用户一致 ansible_ssh_user 被管理主机的用户
ansible_ssh_pass 被管理主机的用户密码
3、测试
ansible all -m ping
四、 基本语法
ansible [被管理主机] -m [功能模块] -a [功能模块参数]
1 被管理的主机 可以是具体的一个ip,分组或all 注意需要与配置文件中的IP,主机名、组一致
2 功能模块 常用模块有 copy file user group ...,
2.1 获取模块帮助文档
ansible-doc [模块名]
3 功能模块参数 就是模块具体执行的操作参数