1 ansible的安装

1.1 yum安装

使用epel源安装:

[root@xuzhichao ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@xuzhichao ~]# yum install ansible
Installed:
ansible.noarch 0:2.9.23-1.el7 Dependency Installed:
PyYAML.x86_64 0:3.10-11.el7 libyaml.x86_64 0:0.1.4-11.el7_0 python-babel.noarch 0:0.9.6-8.el7
python-backports.x86_64 0:1.0-8.el7 python-backports-ssl_match_hostname.noarch 0:3.5.0.1-1.el7 python-cffi.x86_64 0:1.6.0-5.el7
python-enum34.noarch 0:1.0.4-1.el7 python-idna.noarch 0:2.4-1.el7 python-ipaddress.noarch 0:1.0.16-2.el7
python-jinja2.noarch 0:2.7.2-4.el7 python-markupsafe.x86_64 0:0.11-10.el7 python-paramiko.noarch 0:2.1.1-9.el7
python-ply.noarch 0:3.4-11.el7 python-pycparser.noarch 0:2.14-1.el7 python-setuptools.noarch 0:0.9.8-7.el7
python-six.noarch 0:1.9.0-2.el7 python2-cryptography.x86_64 0:1.7.2-2.el7 python2-httplib2.noarch 0:0.18.1-3.el7
python2-jmespath.noarch 0:0.9.4-2.el7 python2-pyasn1.noarch 0:0.1.9-7.el7 Complete!

1.2 pip安装

pip是安装python的工具。

[root@manager ~]# yum install python3 python3-devel python3-pip - y
[root@manager ~]# pip3 install --upgrade pip -i https://pypi.douban.com/simple/
[root@manager ~]# pip3 install ansible -i https://pypi.douban.com/simple/
[root@manager ~]# /usr/local/bin/ansible --version

查看ansible的安装信息,包括版本以及各种文件的路径:

[root@xuzhichao ~]# ansible --version
ansible 2.9.23
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Apr 2 2020, 13:16:51) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

2 ansible相关文件

  • /etc/ansible/ansible.cfg :主配置文件,配置 ansible 工作特性
  • /etc/ansible/hosts :配置主机清单文件
  • /etc/ansible/roles/ :存放 ansible 角色的目录

2.1 ansible配置文件

ansible 的主配置文件存在 /etc/anible/ansible.cfg ,其中大部分的配置内容无需进行修改;

[defaults]
#inventory = /etc/ansible/hosts
`主机清单配置文件`
#library = /usr/share/my_modules/
`库文件存放目录,存放模块`
#module_utils = /usr/share/my_module_utils/
`用到的utils工具存放目录`
#remote_tmp = $HOME/.ansible/tmp
`临时py命令文件存放在远程主机目录,先把ansible执行的指令,先生成py程序,然后放在本地的目录里,然后再用ssh协议,将生成的py程序复制到被管理的机器remote_tmp目录下,复制过去后,拿出来执行,执行完毕后会将该程序删除`
#local_tmp = $HOME/.ansible/tmp
`本机的临时命令执行目录`
#forks = 5 #
`默认并发数`
#poll_interval = 15
`每隔15秒去查看对方的状态`
#sudo_user = root
`默认sudo 用户 `
#ask_sudo_pass = True
#ask_pass = True
`每次执行ansible命令是否询问ssh密码`
#remote_port = 22
`客户端的ssh端口`
#host_key_checking = False
`检查对应服务器的host_key,建议取消注释,用于取消第一次连接问yes|no,若设置为true,则没有输入过yes|no的主机不能使用ansible管理。
#log_path=/var/log/ansible.log
`日志文件,建议取消注释,可以记录日志` [privilege_escalation] #如果是普通用户则需要配置提权
#become=True
#become_method=sudo
#become_user=root
#become_ask_pass=False

2.2 ansible配置文件的优先级

  • Ansible 的配置文件可以存放在任何位置,但配置文件有读取顺序,查找顺序如下:

      1. 最先查找 $ANSIBLE_CONFIG 变量;
      1. 其次查找当前项目目录下 ansible.cfg
      1. 然后查找用户家目录下的 .ansible.cfg
      1. 最后查找 /etc/ansible/ansible.cfg

验证配置文件的优先级:

  • 变量$ANSIBLE_CONFIG 设置的配置文件优先级最高;

    [root@xuzhichao ~]# touch /tmp/ansible.cfg
    [root@xuzhichao ~]# ANSIBLE_CONFIG=/tmp/ansible.cfg
  • 在项目目录中的优先级第二高;

    [root@xuzhichao ~]# mkdir project1
    [root@xuzhichao ~]# cd project1
    [root@xuzhichao project1]# touch ansible.cfg
    [root@xuzhichao project1]# ansible --version
    ansible 2.9.23
    config file = /root/project1/ansible.cfg <==当前生效的配置文件
    configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
    ansible python module location = /usr/lib/python2.7/site-packages/ansible
    executable location = /usr/bin/ansible
    python version = 2.7.5 (default, Apr 2 2020, 13:16:51) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
  • 在当前用户家目录中的配置文件优先级:

    [root@xuzhichao ~]# touch .ansible.cfg
    [root@xuzhichao ~]# ansible --version
    ansible 2.9.23
    config file = /root/.ansible.cfg <==当前生效的配置文件
    configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
    ansible python module location = /usr/lib/python2.7/site-packages/ansible
    executable location = /usr/bin/ansible
    python version = 2.7.5 (default, Apr 2 2020, 13:16:51) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
  • 最后是/etc/ansible/ansible.cfg

2.3 ansible的主机清单Inventory

ansible的主要功用在于批量主机操作,想要完成主机管理,第一步要编辑主机清单(inventory)Inventory 文件主要用来填写被管理主机以及主机组信息;(逻辑上定义);默认 Inventory 文件为/etc/ansible/hosts

当然也可以自定义一个文件,当执行 ansible 命令时使用 -i 选项指定 Inventory文件位置;

2.3.1 Inventory文件格式

为了便捷地使用其中的部分主机,可以在inventory file中将其分组命名。

  • 分组命名遵循INI文件风格,也就是中括号中的字符为组名,如[web]

    [web]
    192.168.169.128
    192.168.169.129
  • 可以将同一个主机同时归并到多个不同的组中,如192.168.169.129同时存在于[web]与[app]中:

    [web]
    192.168.169.128
    192.168.169.129
    [app]
    192.168.169.130
    192.168.169.129
  • 支持主机名写法,并且支持通配符:

    www[01:50].example.com       <==支持通配符匹配www01 www02 ...www50
  • 当如若目标主机使用了非默认的SSH端口,还可以在主机名称之后使用冒号加端口号来标明:

    www.example.com:2222
  • 可以使用基于用户名密码的方式连接被控主机,可以在主机清单中定义被控主机的用户名密码:

    [webservers]
    10.0.0.31 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
    10.0.0.41 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'

2.3.2 使用普通用户管理被控端

ansible使用普通用户xu去管理被控端。

  1. 首先控制端,被控端都需要有xu用户;

    #ansible主机创建用户
    [root@xuzhichao etc]# useradd xu
    [root@xuzhichao etc]# echo "123456" | passwd --stdin xu #被控端主机创建用户
    [root@nginx02 ~]# useradd xu
    [root@nginx02 ~]# echo "123456" | passwd --stdin xu
  2. 实现普通用户的秘钥认证:

    [xu@xuzhichao ~]$ ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/xu/.ssh/id_rsa):
    Created directory '/home/xu/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/xu/.ssh/id_rsa.
    Your public key has been saved in /home/xu/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:xnPoL029TxN0PH+55LssaS9NtX2DYtkUKwKB3zo4Z7M xu@xuzhichao
    The key's randomart image is:
    +---[RSA 2048]----+
    | ... |
    | . . . . |
    | . o +.o|
    | o + . + .=|
    | . S o.= oo*|
    | o O o.+.oo==|
    | + =o. ..*oo|
    | E... .*.o.|
    | .. ..==.|
    +----[SHA256]-----+ [xu@xuzhichao ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub xu@192.168.20.22
    /bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/xu/.ssh/id_rsa.pub"
    The authenticity of host '192.168.20.22 (192.168.20.22)' can't be established.
    ECDSA key fingerprint is SHA256:G8+byxRD1GdKHww8nN1ZbyiAKEcMtVhaPOTTxt0Aldc.
    ECDSA key fingerprint is MD5:fa:e1:df:9f:ae:c2:3d:f3:67:65:c0:12:3a:e1:ce:cc.
    Are you sure you want to continue connecting (yes/no)? yes
    /bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    xu@192.168.20.22's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'xu@192.168.20.22'"
    and check to make sure that only the key(s) you wanted were added.
  3. 在被控端主机上配置visodu提权,需要配置免passwd方式提权:

    [root@nginx02 ~]# visudo
    xu ALL=(ALL) NOPASSWD:ALL
  4. 修改控制端 /etc/ansible/ansible.cfg主配置文件,配置普通用户提权:

    [root@xuzhichao ~]# vim /etc/ansible/ansible.cfg
    [privilege_escalation]
    become=True
    become_method=sudo
    become_user=root
    become_ask_pass=False
  5. 定义主机清单:

    [root@xuzhichao ~]# vim /etc/ansible/hosts
    [nginx-web]
    192.168.20.22
    192.168.20.23
  6. 切换到xu用户测试管理被控端主机:

    [root@xuzhichao ~]# su - xu
    [xu@xuzhichao ~]$ ansible 192.168.20.22 -m ping
    192.168.20.22 | SUCCESS => {
    "ansible_facts": {
    "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
    }

ansible(2)--ansible的安装与配置文件管理的更多相关文章

  1. 企业级自动化部署方案——ansible实现tomcat自动安装和配置

    共耗时10多个小时 思路一 总体设计 ansible-playbook目录结构 [root@ansible ~]# tree /etc/ansible/roles/tomcat /etc/ansibl ...

  2. rabbitmq源码安装及配置文件管理

    rabbitmq 源码安装 官网地址:rabbitmq http://www.rabbitmq.com/releases/rabbitmq-server/ 官网地址:erlang http://erl ...

  3. ansible基础-安装与配置

    一 安装 1.1 ansible架构 ansible是一个非常简单的自动化部署项目,由python编写并且开源.用于提供自动化云配置.配置文件管理.应用部署.服务编排和很多其他的IT自动化需求. an ...

  4. Ansible 入门 (1) - 安装和配置

    本文参考 <Ansible 自动化运维和最佳实践>,这两天刚读这本书,写写总结.主控机环境是 centos 7,被控机均是 centos 6.8 . 确保 python 版本大于 2.6 ...

  5. Ansible 安装与配置(一)

    公司大概有200多云主机需要进行管理,但是如果通过手工管理费时还累最终结果也容易出错,所以考虑通过自动化的方式来管理云主机,目前开源的自动化工具,大家用的比较多的有Ansible和Saltstack这 ...

  6. Ansible安装及配置

    ansible分为以下几个部份: Ansible:核心引擎 Modules:包括 Ansible 自带的核心模块(core modules)及自定义模块 (custom modules): 核心模块: ...

  7. Ansible详解(一)基础安装和配置

    ansible 是一款轻量级自动化运维工具,由的 Python 语言开发,结合了多种自动化运维工具的特性,实现了批量系统配置,批量程序部署,批量命令执行等功能; ansible 是基于模块化实现批量操 ...

  8. Ansible 笔记 (1) - 安装和配置

    本文参考 <Ansible 自动化运维和最佳实践>,这两天刚读这本书,写写总结.主控机环境是 centos 7,被控机均是 centos 6.8 . 确保 python 版本大于 2.6 ...

  9. ansible安装和配置

    一.安装ansible准备 //安装准备 .两台机器 172.7.15.106 172.7.15.111 .设置hostname以及hosts 172.7.15.106 web9.lulu.com 1 ...

  10. ansible介绍、安装与配置

    一.ansible简介 (1)简介: Ansible是近年越来越火的一款自动化运维工具,其主要的功能是帮助运维实现IT工作的自动化,降低人为操作失误.提高业务自动化率,常用于软件部署.配置自动化.管理 ...

随机推荐

  1. HashMap对key或value进行排序--Java--小白必懂2

    HashMap对key进行排序 public static void main (String[]args){ HashMap<String, Integer> map = new Has ...

  2. 【转载】Vue路由 hash与history 的区别

    [转载]Vue路由 hash与history 的区别 两种路由模式原因 对于 Vue 这类渐进式前端开发框架, 为了构建 SPA(单页面应用), 需要引入前端路由系统, 这也就是 Vue-Router ...

  3. 高德地图和echarts结合实现地图下钻(二)

    一.学习ajax发送异步请求 1 $(function(){ 2 //请求参数 3 var list = {}; 4 // 5 $.ajax({ 6 //请求方式 7 type : "POS ...

  4. Ryoku 的新年欢乐赛

    目录 前言 洛谷 6033 Ryoku 的探索 题目 分析 代码 洛谷 6034 Ryoku 与最初之人笔记 题目 分析O(log^2n) 代码(赛时AC) 分析O(logn) 代码(赛后) 洛谷 6 ...

  5. #K-D Tree#洛谷 2093 [国家集训队]JZPFAR

    题目 平面上有 \(n\) 个点.现在有 \(m\) 次询问,每次给定一个点 \((px, py)\) 和一个整数 \(k\), 输出 \(n\) 个点中离 \((px, py)\) 的距离第 \(k ...

  6. HarmonyOS实现静态与动态数据可视化图表

    一. 样例介绍 本篇Codelab基于switch组件和chart组件,实现线形图.占比图.柱状图,并通过switch切换chart组件数据的动静态显示.要求实现以下功能: 1.  实现静态数据可视化 ...

  7. CRC报错查看

    前言 查看交换机接口是否有CRC报错,本案例以华三交换机为例. CRC是指循环冗余校验错 使用仪器测试链路.链路质量差或者线路光信号衰减过大会导致报文在传输过程中出错.如链路故障请更换网线或光纤. 与 ...

  8. 国密 SM2 的非对称签名验签过程

    国密 SM2 的非对称签名验签过程 介绍 非对称加密确保了消息传输中的保密性,但是由于使用公钥加密,而公钥是分发出去的,可能泄露,谁都可以使用公钥加密发送消息. 因此为了保证收到的消息是由对应的发送者 ...

  9. 抓包整理————tcp 三次握手性能优化[十]

    前言 tcp 三次握手性能优化. 正文 服务器三次握手流程示例: 下面就是3次握手的过程: 知道这个有什么用呢? 我举一个我使用到的例子哈. 比如有很多 tcp 连接到一台机器上机器上,那么tcp_m ...

  10. 开源在线表单工具 HeyForm 使用教程

    HeyForm 是一个非常出色的开源在线表单工具,可以通过直观的拖拽式编辑器,快速构建出美观实用的表单. HeyForm 的功能非常丰富: 支持丰富的输入类型,从基础的文本.数字到高级的图片选择.日期 ...