一、安装

安装erpl.repo
[root@hadoop102 ~]# cd /etc/yum.repos.d
[root@hadoop102 yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum 或编译安装
[root@hadoop102 ~]#yum -y install ansible
[root@hadoop102 ~]# ansible —version
image.png

注意:管理节点的服务器环境python>=2.6 (Centos系统自带python2.7)
被管理节点的服务器环境python>=2.4

二、相关文件

1. 配置文件

/etc/ansible/ansible.cfg 主配置文件,配置ansible工作特性(一般无需修改)
/etc/ansible/hosts 主机清单(将被管理的主机放到此文件)
/etc/ansible/roles/ 存放角色的目录

2. 程序

/usr/bin/ansible 主程序,临时命令执行工具
/usr/bin/ansible-doc 查看配置文档,模块功能查看工具
/usr/bin/ansible-galaxy 下载/上传优秀代码或Roles模块的官网平台
/usr/bin/ansible-playbook 定制自动化任务,编排剧本工具
/usr/bin/ansible-pull 远程执行命令的工具
/usr/bin/ansible-vault 文件加密工具
/usr/bin/ansible-console 基于Console界面与用户交互的执行工具

三、Ansible 配置文件

ansible 配置文件:
/etc/ansible/ansible.cfg (一般保持默认)

cat /etc/ansible/ansible.cfg

  1. [defaults]
  2. #inventory = /etc/ansible/hosts # 主机列表配置文件
  3. #library = /usr/share/my_modules/ # 库文件存放目录
  4. #remote_tmp = $HOME/.ansible/tmp # 临时py命令文件存放在远程主机目录
  5. #local_tmp = $HOME/.ansible/tmp # 本机的临时命令执行目录
  6. #forks = 5 # 默认并发数,同时可以执行5次
  7. #sudo_user = root # 默认sudo 用户
  8. #ask_sudo_pass = True # 每次执行ansible命令是否询问ssh密码
  9. #ask_pass = True # 每次执行ansible命令是否询问ssh口令
  10. #remote_port = 22 # 远程主机的端口号(默认22)
  11. 建议优化项:
  12. host_key_checking = False # 检查对应服务器的host_key,建议取消注释
  13. log_path = /var/log/ansible.log # 日志文件,建议取消注释
  14. module_name = command # 默认模块

四、SSH 免密

环境:
管理节点:192.168.10.102 hadoop102
被管理节点:192.168.10.103 hadoop103
被管理节点:192.168.10.104 hadoop104

1. 管理节点中创建密钥对

[root@hadoop102 ~]# ssh-keygen -t rsa

2. 将管理节点的公钥传输到被管理节点

[root@hadoop102 ~]# ssh-copy-id root@192.168.10.103
[root@hadoop102 ~]# ssh-copy-id root@192.168.10.104

五、与被管理节点的连通性测试

在管理节点上:
测试1:
[root@hadoop102 ~]# ansible all -i 192.168.10.103,192.168.10.104 -m ping
image.png

测试2:
[root@hadoop102 ~]# touch /tmp/test.conf
[root@hadoop102 ~]# ansible all -i 192.168.10.103,192.168.10.104 -m copy -a “src=/tmp/test.conf dest=/tmp/test.conf”

在192.168.10.103、192.168.10.104的/tmp/下查看,test.conf已传输成功

参数说明:
-m:指定模块
all:匹配指定的所有资产
-i:指定被管理节点的主机列表,⼀定要加⼀个英⽂逗号(,),告知是List
比如:ansible all -i 192.168.10.103, -m ping,如果不加逗号,返回结果会报错
-a:指定模块的参数