--时间:2019年1月12日

--作者:飞翔的小胖猪

前言

说明

文档指导读者在Redhat系列操作系统上安装Ansible软件及初始化配置,包括服务端及被控端的配置文件设置。

以下所有操作都在Ansible服务器端操作,客户端不做任何配置。

环境

操作系统:CentOS Linux release 7.6.1810 (Core)   最小安装

数据库:mariadb-5.5.56-2.el7.x86_64

编程软件:Python 3.6.4

软件来源

安装ansible需要手动去互联网中下载和自己操作系统版本对应的ansible版本。

centos7相关地址: https://mirrors.aliyun.com/epel/7/x86_64/Packages/a/

centos8相关地址:https://mirrors.aliyun.com/epel/8/Everything/x86_64/Packages/a/

例:https://mirrors.aliyun.com/epel/7/x86_64/Packages/a/ansible-2.9.16-1.el7.noarch.rpm

配置

思路步骤

文档撰写流程及思路如下。

    1.安装ansible+python+mariadb软件
    2.配置ansible服务端,取消ssh登录敲yes等参数
    3.生成root的公私钥对。
    4.下发私钥至客户端服务器。
    5.编辑配置ansible主机清单文件。
    6.测试配置是否成功

1.安装软件

安装ansible、python、mysql软件。
[root@ansible-el7 ~]# yum install mariadb* -y
[root@ansible-el7 ~]# mysql_secure_installation
[root@ansible-el7 ~]# mysql -uroot -pyinwan
[root@ansible-el7 ~]# tar -zxvf Python-3.6.4.tgz
[root@ansible-el7 ~]# cd Python-3.6.4/
[root@ansible-el7 ~]# ./configure --prefix=/opt/python3
[root@ansible-el7 ~]# mkdir /opt/python3
[root@ansible-el7 ~]# /opt/python3/bin/pip3 install --no-index --find-link /myfile/lvan/soft -r /myfile/lvan/soft/filename.txt
[root@ansible-el7 ~]# yum install MySQL-python -y
[root@ansible-el7 ~]# yum localinstall ./ansible-2.4.2.0-2.el7.noarch.rpm -y

2.配置ansble服务端

配置首次通过ssh协议登录被控主机时不用敲yes。ssh在登录服务器时会提示敲一个yes。
[root@ansible-el7 ~]# vim /etc/ansible/ansible.cfg
host_key_checking = False

配置ansible服务器在连接客户端时指定密钥对及一些基本配置。
[root@ansible-el7 ~]# vim /etc/ssh/ssh_config
IdentityFile ~/.ssh/id_rsa
StrictHostKeyChecking no

配置ansible服务器sshd服务端配置。
[root@ansible-el7 ~]# vim /etc/ssh/sshd_config
GSSAPIAuthentication no
UseDNS no

重启sshd服务
[root@ansible-el7 ~]# systemctl restart sshd

3.生成密钥对

[root@ansible-el7 ~]# ssh-keygen  -t rsa

[root@ansible-el7 ~]# ll /root/.ssh/

4.下发公钥至客户端

如果ansible主机清单使用明文密码则不用执行该步骤,直接跳至第5步。

下发公钥文档提供了两种方式,任选其一即可,一般情况下10台及以下的主机推荐使用单主机模式下发,在大规模的环境下使用脚本方式下发。
*---------------------------------------------------------------------------------*
单主机下发:
只需要通过命令下发公钥到指定主机中,首次需要手动输入远程主机对应用户密码。然后测试下是否能够在公钥传输后不用密码登录远端主机。
使用单条命令下发rsa文件到指定主机中

[root@ansible-el7 ~]# ssh-copy-id -i /root/.ssh/id_rsa root@192.168.111.30

把指定的/root/.ssh/id_rsa.rsa文件复制到192.168.111.30的/root/.ssh/authorized_key文件中

测试直接使用密钥对登录客户端系统。
[root@ansible-el7 ~]# ssh -i /root/.ssh/id_rsa root@192.168.111.30

指定使用/root/.ssh/id_rsa.rsa公钥文件连接远程主机192.168.111.30

*---------------------------------------------------------------------------------*

*—————————————————————————————*

批量下发:
在批量主机下发时,需要准备一个写有需要控制的主机的ip地址和用户名及密码的文件,每个列数据间用“空格隔开”,然后编写一个脚本一行一行读取文件中的数据,进行文件下发操作。
使用主机表+shell脚本的方式下发rsa(仅限linux)

[root@ansible-el7 ~]#cat hostname_auto_ssh.txt
192.168.111.30 root yinwan
192.168.111.31 root yinwan
192.168.111.33 root yinwan
192.168.111.63 root yinwan

[root@ansible-el7 ~]#vim auto_ssh.sh
#!/bin/bash
cat hostname_auto_ssh.txt | while read ipaddr root passwd
do
#执行把rsa文件拷贝到指定主机中
jieguo=`sshpass -p $passwd /usr/bin/ssh-copy-id -i /root/.ssh/id_rsa.rsa $root@$ipaddr`
if [ $? -eq 0 ];then
#判断如果命令成功则把ip信息传入到成功日志中
echo "$ipaddr succeed" >> succeed_copy.log
else
#判断如果命令失败则把ip信息传入到失败日志中
echo "$ipaddr failed copying" >> failed_copy.log
fi
done

[root@ansible-el7 ~]#./auto_ssh.sh

如果有台被管节点重新安装系统并且在known_hosts中有了与之前不同的密钥信息,就会提示一个密钥信息不匹配的错误信息,直到被纠正为止。在使用Ansible时,如果有台被管节点没有在known_hosts中被初始化,将会在使用Ansible或定时执行Ansible时提示对key信息的确认。
如果不想出现这种情况,并且明白禁用此项行为的含义,只需要修改home目录下
~/.ansible.cfg 或 /etc/ansible/ansible.cfg 的配置选项。

[root@ansible-el7 ~]# vim /etc/ansible/ansible.cfg
[defaults]
host_key_checking = False

或者直接在控制主机的操作系统中设置环境变量,如下所示:

[root@ansible-el7 ~]#export ANSIBLE_HOST_KEY_CHECKING=False

*—————————————————————————————*

5.编辑主机清单

文档提供两种方式设置主机清单,推荐使用密钥对的方式添加主机清单,采用明文密码的时候不用执行第4步操作。

*---------------------------------------------------------------------------------*
使用名文密码案例:
使用明文密码填写到ansible文件密码对任何人都可见,中存在较大的风险。

[root@ansible-el7 ~]#vim /etc/ansbile/hosts
[rhel]
rhel7_5 ansible_ssh_host=192.168.111.33 ansible_ssh_user='root' ansible_ssh_port=22 ansible_ssh_pass='yinwan'
rhel6_5 ansible_ssh_host=192.168.111.63 ansible_ssh_user='root' ansible_ssh_port=22 ansible_ssh_pass='yinwan'
[suse]
Suse11_Sp3 ansible_ssh_host=192.168.111.31 ansible_ssh_user='root' ansible_ssh_port=22 ansible_ssh_pass='yinwan'
[ubuntu]
Ubuntu16_4 ansible_ssh_host=192.168.111.30 ansible_ssh_user='root' ansible_ssh_port=22 ansible_ssh_pass='yinwan'

*---------------------------------------------------------------------------------*

*—————————————————————————————*
使用公钥案例:
使用公钥填写到ansible文件中,可以减少主机密码外泄的风险。

优点:防止密码泄露,客户端修改密码后不会影响访问。

缺点:风险很大,ansible服务端一旦成为肉鸡会影响所有被控客户端。

[root@ansible-el7 ~]#vim /etc/ansbile/hosts
[rhel]
rhel7_5 ansible_ssh_host=192.168.111.33 ansible_ssh_user='root' ansible_ssh_port=22 ansible_ssh_private_key_file=/root/.ssh/id_rsa.rsa
rhel6_5 ansible_ssh_host=192.168.111.63 ansible_ssh_user='root' ansible_ssh_port=22 ansible_ssh_private_key_file=/root/.ssh/id_rsa.rsa
[suse]
Suse11_Sp3 ansible_ssh_host=192.168.111.31 ansible_ssh_user='root' ansible_ssh_port=22 ansible_ssh_private_key_file=/root/.ssh/id_rsa.rsa
[ubuntu]
Ubuntu16_4 ansible_ssh_host=192.168.111.30 ansible_ssh_user='root' ansible_ssh_port=22 ansible_ssh_private_key_file=/root/.ssh/id_rsa.rsa

*—————————————————————————————*

6.测试

测试ansible配置是否正常。

在hosts配置文件中未设置rsa时,客户主机已经传过rsa文件的情况下可以使用。
[root@ansible-el7 ~]#ansible all --private-key=/root/.ssh/id_rsa.rsa -f 10 -t /ansible/ansible_log -m ping

指定rsa文件在/root/.ssh/id_rsa.rsa位置,线程为10,保存的日志文件在/ansible/ansible_log,使用ping模块。

当在/etc/ssh/ssh_config中指定了rsa文件路径过后使用,则不需要指定--private-key=参数。

[root@ansible-el7 ~]#ansible all -f 20 -t /ansible/ansible_log -m ping

Ansible安装及初始化-从零到无的更多相关文章

  1. 批量搞机(一):ansible简介、ansible安装

    一.ansible简介 Ansible是2013年推出的一款IT自动化和DevOps软件,目前由Redhat已签署Ansible收购协议.其是基于Python研发,糅合了很多老运维工具的优点实现了批量 ...

  2. 初探ansible安装

    一.ansible介绍常用的自动化运维工具 Puppet —基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱SaltStack —基于 Python 开发,采用 ...

  3. Ansible安装配置Nginx

    一.思路 现在一台机器上编译安装好nginx.打包,然后在用ansible去下发 cd /etc/ansible 进入ansible配置文件目录 mkdir roles/{common,install ...

  4. Ansible安装 入门教程

    learn一门新技术咯: ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置 ...

  5. Linux centosVMware 自动化运维Ansible介绍、Ansible安装、远程执行命令、拷贝文件或者目录、远程执行脚本、管理任务计划、安装rpm包/管理服务、 playbook的使用、 playbook中的循环、 playbook中的条件判断、 playbook中的handlers、playbook实战-nginx安装、管理配置文件

    一.Ansible介绍 不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读 安装十分简单,ce ...

  6. Kali Linux渗透测试实战 1.2 环境安装及初始化

    1.2 环境安装及初始化 目录(?)[-] 环境安装及初始化 下载映像 安装虚拟机 安装Kali Linux 安装中文输入法 安装VirtualBox增强工具 配置共享目录和剪贴板 运行 Metasp ...

  7. 基于iSCSI的SQL Server 2012群集测试(二)--SQL群集安装后初始化配置测试

    4.群集安装后初始化配置测试 4.1 禁用full-text 服务和Browser服务 Full-text服务:公司目前暂不使用,需在两个节点上分别禁用 Browser服务:为保证安全,建议将Brow ...

  8. 跟我一起Django - 01 安装和初始化

    跟我一起Django - 01 安装和初始化 python环境 C:\Python27\Lib\site-packages>python --versionPython 2.7.5 安装setu ...

  9. Ansible安装配置及使用

    一.Ansible特点 1.不需要安装客户端,通过sshd通信 2.基于模块工作,模块可以由任何序言开发 3.不仅支持命令行使用模块,也支持编写yaml格式的playbook 4.支持sudo 5.有 ...

随机推荐

  1. gorm概述与快速入门

    特性 全功能 ORM 关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承) Create,Save,Update,Delete,Find 中钩子方 ...

  2. 不难懂——th: 的常用标签

    关键字>       功能介绍    >      案例 th:id 替换id <input th:id="'xxx' + ${collect.id}"/> ...

  3. TCP长连接实践与挑战

    点这里立即申请 本文介绍了tcp长连接在实际工程中的实践过程,并总结了tcp连接保活遇到的挑战以及对应的解决方案. 作者:字节跳动终端技术 --- 陈圣坤 概述 众所周知,作为传输层通信协议,TCP是 ...

  4. 解读WPF中的Binding

    1.Overview 基于MVVM实现一段绑定大伙都不陌生,Binding是wpf整个体系中最核心的对象之一这里就来解读一下我花了纯两周时间有哪些秘密.这里我先提出几个问题应该是大家感兴趣的,如下: ...

  5. ApacheCN JavaScript 译文集 20211122 更新

    JavaScript 编程精解 中文第三版 零.前言 一.值,类型和运算符 二.程序结构 三.函数 四.数据结构:对象和数组 五.高阶函数 六.对象的秘密 七.项目:机器人 八.Bug 和错误 九.正 ...

  6. NumPy 教程目录

    NumPy 教程目录 1 Lesson1--NumPy NumPy 安装 2 Lesson2--NumPy Ndarray 对象 3 Lesson3--NumPy 数据类型 4 Lesson4--Nu ...

  7. 「JOI 2014 Final」裁剪线

    做法一 首先将边界也视作四条裁剪线,整个平面作为一张纸,视存在 \(y = -\infty, y = +\infty, x = -\infty, x = +\infty\) 四条直线. 按照纵坐标依次 ...

  8. 学习JDBC遇到的一些问题

    1. 数据库版本与驱动对应问题 参考官方文档:https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-versions.html 具体详情还需 ...

  9. PHP的这些基础知识你应该熟知

    PHP变量的值类型和引用类型 四种基本类型(int,float,string,boolean)以及复合类型(array)均为值类型,变量间的赋值传递的是值,相当于创建一个副本给新变量. 对象(obje ...

  10. 企业级Docker容器镜像仓库Harbor的搭建

    Harbor简述 Habor是由VMWare公司开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理 ...