--时间: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.安装软件

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

2.配置ansble服务端

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

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

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

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

3.生成密钥对

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

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

4.下发公钥至客户端

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

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

  1. [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文件中

  1. 测试直接使用密钥对登录客户端系统。
    [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)

  1. [root@ansible-el7 ~]#cat hostname_auto_ssh.txt
  2. 192.168.111.30 root yinwan
  3. 192.168.111.31 root yinwan
  4. 192.168.111.33 root yinwan
  5. 192.168.111.63 root yinwan

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

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

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

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

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

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

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

5.编辑主机清单

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

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

  1. [root@ansible-el7 ~]#vim /etc/ansbile/hosts
  2. [rhel]
  3. rhel7_5 ansible_ssh_host=192.168.111.33 ansible_ssh_user='root' ansible_ssh_port=22 ansible_ssh_pass='yinwan'
  4. rhel6_5 ansible_ssh_host=192.168.111.63 ansible_ssh_user='root' ansible_ssh_port=22 ansible_ssh_pass='yinwan'
  5. [suse]
  6. Suse11_Sp3 ansible_ssh_host=192.168.111.31 ansible_ssh_user='root' ansible_ssh_port=22 ansible_ssh_pass='yinwan'
  7. [ubuntu]
  8. Ubuntu16_4 ansible_ssh_host=192.168.111.30 ansible_ssh_user='root' ansible_ssh_port=22 ansible_ssh_pass='yinwan'

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

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

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

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

  1. [root@ansible-el7 ~]#vim /etc/ansbile/hosts
  2. [rhel]
  3. 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
  4. 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
  5. [suse]
  6. 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
  7. [ubuntu]
  8. 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配置是否正常。

  1. hosts配置文件中未设置rsa时,客户主机已经传过rsa文件的情况下可以使用。
  2. [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=参数。

  1. [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. Sping简介

    SSH:Struct2 + Spring +Hibernate SSM:SpringMVC + Spring + Mybatis 优点 1,Sping是一个开源的免费的框架(容器) 2,Spirng是 ...

  2. MySQL 5.7主从搭建(同一台机器)

    主从复制原理:复制是 MySQL 的一项功能,允许服务器将更改从一个实例复制到另一个实例. 1)主服务器将所有数据和结构更改记录到二进制日志中. 2)从属服务器从主服务器请求该二进制日志并在本地应用其 ...

  3. 计算机网络再次整理————socket[一]

    前言 以前也整理过吧,写了几篇之后,感觉没啥整理的必要了然后就放弃了,最近又想整理一下. 正文 这篇对应的是:https://www.cnblogs.com/aoximin/p/12235333.ht ...

  4. 数论同余学习笔记 Part 2

    逆元 准确地说,这里讲的是模意义下的乘法逆元. 定义:如果有同余方程 \(ax\equiv 1\pmod p\),则 \(x\) 称为 \(a\bmod p\) 的逆元,记作 \(a^{-1}\). ...

  5. (4)什么是Ribbon负载均衡

    4.Ribbon负载均衡 上一节中,我们添加了@LoadBalanced注解,即可实现负载均衡功能,这是什么原理呢? 4.1.负载均衡原理 SpringCloud底层其实是利用了一个名为Ribbon的 ...

  6. GC基础知识

    内存溢出和内存泄漏 内存溢出(Out Of Memory) 就是申请内存时,JVM没有足够的内存空间.通俗说法就是去蹲坑发现坑位满了. 内存泄露 (Memory Leak) 就是申请了内存,但是没有释 ...

  7. nginx开发:ngx_sprintf

    格式化参数%系列,如果误用的话,轻则输出不正确,重则nginx可能core. 1. 格式: %{格式描述}{输出类型描述}{数据类型描述} 2. 数据类型描述: V:字符串,对应ngx_str_t * ...

  8. Html 项目使用自定义字体文件问题

    感谢大佬:https://zhidao.baidu.com/question/652711582735059245.html 1.首先在项目过程中新建文件夹fonts将准备好的ttf字体文件复制该文件 ...

  9. PostgreSQL删除数据库失败处理

    PostgreSQL Drop DATABASE删除数据库失败,需要结束掉占用的连接 登录PostgreSQL后,执行: SELECT pg_terminate_backend(pg_stat_act ...

  10. JavaWeb项目中斜杠(/)表示web工程、webapps的场景

    "/"代表当前web工程的常见应用场景 ①.ServletContext.getRealPath(String path)获取资源的绝对路径 /** * 1.ServletCont ...