• Linux 源码安装Ansible 参考篇


    Ansible 源码搭建配置

    近期在学习自动化运维相关技术,文章主要模拟内网情况下对Ansible的安装演示,源码安装较为繁琐、枯燥,尤其是在实际安装过程中可能出现各式各样的问题,所有在安装过程中尽量保持与我演示的环境、安装版本一致。

    1.环境准备

    实验服务器准备

    # 服务器端
    192.168.238.134
    
    # 被控端 
    192.168.238.135
    192.168.238.136
    

    系统版本

    cat /etc/redhat-release
    CentOS Linux release 7.9.2009 (Core)
    

    内核版本

    uname -r
    3.10.0-1160.31.1.el7.x86_64
    

    准备依赖包环境

    安装python-devel和openssl-devel

    yum -y install python-devel openssl-devel libffi-devel
    

    下载源码包文件到自定义文件目录

    https://releases.ansible.com/ansible/ (ansible 官网下载地址)

    https://pypi.org/ (模块包下载地址)

    2.ansible 基本架构图

    2.1Ansible架构简介

    1.主机群(Host Inventory):定义ansible管理的主机
    
    2.剧本(Playbooks):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行
    
    3.核心模块 (core modules)连接主机实现操作,它依赖于具体的模块来做具体的事情
    
    4.扩展模块 (custom modules),根据自己的需求编写具体的模块
    
    5.插件(Plugins):完成模块功能的补充
    
    6.连接插件(Connectior Plugins):ansible基于连接插件连接到各个主机上,虽然ansible是使用ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件
    

    2.1Ansible 特点

    1.不需要代理,不需要客户端
    
    2.没有服务器端,使用时直接使用命令
    
    3.基于模块工作
    
    4.默认基于ssh工作
    
    5.支持YAML定义剧本
    

    3.依次解压、安装源码包文件

    注:安装过程中请依次进行如下顺序安装

    安装 setuptools

    unzip setuptools-41.0.1.zip 
    cd setuptools-41.0.1 
    python setup.py install 
    

    安装pycrypto

    tar -xzf pycrypto-2.6.1.tar.gz  
    cd pycrypto-2.6.1 
    python setup.py install 
    

    安装 PyYAML

    tar -xzf PyYAML-5.1.tar.gz  
    cd PyYAML-5.1 
    python setup.py install 
    

    安装MarkupSafe

    tar -xzf MarkupSafe-1.1.1.tar.gz  
    
    cd MarkupSafe-1.1.1 
    
    python setup.py  install 
    

    安装Jinja2

    tar -xzf Jinja2-2.10.1.tar.gz  
    
    cd Jinja2-2.10.1 
    
    python setup.py  install 
    

    安装ecdsa

    tar -xzf ecdsa-0.13.2.tar.gz  
    
    cd ecdsa-0.13.2 
    
    python setup.py install 
    

    安装simplejson

    tar -xzf simplejson-3.16.0.tar.gz  
    
    cd simplejson-3.16.0 
    
    python setup.py install 
    

    安装pycparser

    tar -xzf pycparser-2.19.tar.gz 
    
    cd pycparser-2.19 
    
    python setup.py install 
    

    安装cffi

    tar -xzf cffi-1.12.3.tar.gz  
    
    cd cffi-1.12.3 
    
    python setup.py install 
    

    安装ipaddress

    tar -xzf ipaddress-1.0.22.tar.gz  
    
    cd ipaddress-1.0.22 
    
    python setup.py install 
    

    安装six

    tar -xzf six-1.12.0.tar.gz  
    
    cd six-1.12.0 
    
    python setup.py install 
    

    安装asn1crypto

    tar -xzf asn1crypto-0.24.0.tar.gz  
    
    cd asn1crypto-0.24.0 
    
    python setup.py install 
    

    安装pyasn1

    tar -xzf pyasn1-0.4.5.tar.gz  
    
    cd pyasn1-0.4.5 
    
    python setup.py install 
    

    安装PyNaCl

    tar -xzf PyNaCl-1.3.0.tar.gz  
    
    cd PyNaCl-1.3.0 
    
    python setup.py install 
    

    安装cryptography

    tar -xzf cryptography-2.6.1.tar.gz  
    
    cd cryptography-2.6.1
    
    python setup.py install 
    

    安装paramiko

    tar -xzf paramiko-2.4.2.tar.gz  
    
    cd paramiko-2.4.2 
    
    python setup.py install 
    

    安装ansible

    tar -xzf ansible-latest.tar.gz  
    
    cd ansible-2.7.10/ 
    
    python setup.py install
    

    安装完成后,检查查看ansible版本

    ansible --version
    

    4.生成密钥文件配置主机互信

    ssh-keygen -t rsa
    # 执行上述命令无需进行其它操作,一直点击Enter键即可
    

    注:生成之后会在用户的根目录生成一个 “.ssh”的文件夹(使用 ls -a或 ll -a 命令可查看)

    文件说明:
    
    id_rsa : 生成的私钥文件
    
    id_rsa.pub :生成的公钥文件
    
    know_hosts : 已知的主机公钥清单
    
    如果希望ssh公钥生效需满足至少下面两个条件:
    
    (1).ssh目录的权限必须是700 
    
    (2).ssh/authorized_keys文件权限必须是600
    

    4.1配置主机互信

    将本机公钥分发到其它被控制主机服务器

    使用ssh-copy-id 命令实现公钥分发(也可使用其它命令如:scp命令)

    ssh-copy-id root@192.168.238.135
    ssh-copy-id root@192.168.238.136
    

    注:如执行ssh-copy-id时报错提示命令不存在,解决办法参考下述,也可使用scp命令进行公钥分发

    yum -y install openssh-clients
    

    5.Ansible 配置

    5.1修改配置文件

    复制示例文件为配置文件

    mkdir /etc/ansible
    
    cp -r /usr/local/ansible/examples/* /etc/ansible/
    

    将所有被管理的主机加入到/etc/ansible/hosts文件中

    1.1可以将所有主机写入此文件,那么此后所做的操作就会影响所有写入的主机;
    1.2可以以[主机组名]的方式定义属于同一组的所有主机,如定义[test]段,将所有的web主机的IP或者主机名写入段中,此后就可以用ansible实施诸如servicehttpdstatus等仅对web主机所做的操作了,而其他主机则不会受影响,当然一个组中的主机也可以在其他组中出现,不一定每个组中的主机都不相同;
    1.3可以用通配符的方式定义,如node[1:3].a.com,表示定义了node1.a.com node2..a.com和node3.a.com三台主机;
    1.4可以直接写入主机IP,也可以写入主机名,但是必须保证能解析这些主机名;
    

    这里我专门添加了一个未使用的服务器IP(192.168.238.137)方便我们下述测试中观察可达节点及不可达节点之间区别

    5.2测试ansible受管节点是否可达

    ansible test -m ping  # 执行ping命令对test 组进行存活检测,如对所有组进行检测可使用 all替换test
    

    6.Ansible 命令格式

    ansible命令格式:
    
     ansible <host-pattern>   [-m module_name]   [-a args] [options]
    
    <host-pattern> :指定主机组或IP
    
    [-m module_name] : 指定调用模块
    
    [-a args] [options] : 传递给模块的参数
    

    6.1Ansible常用命令

    ansible test --list-hosts # 列出执行主机列表
    ansible-doc -l  # 查看所有模块   (键入q退出)
    ansible-doc command # 查看command模块详细信息
    ansible-doc -s command  # 查看command模块详细用法
    ansible test -m command -a 'df -h'  # 对所有被控服务器使用df -h 命令
    ansible web -m command -a 'useradd Tom' # 批量添加用户
    

    想系统了解Ansible的同学也可以参考下如下链接文章

    (http://www.ansible.com.cn/docs/intro_installation.html) (Ansible 中文指南)

    (http://www.178linux.com/79792)(Ansible 相关文章)

  • 相关阅读:
    SpringMVC基于注解使用:异常处理
    【数据结构】Map和Set
    【RTOS训练营】队列的读写、休眠和唤醒、常规应用、使用和晚课提问
    软件设计模式系列之二十二——状态模式
    Linux命令(77)之curl
    uni-app - 弹出框
    2022浙江网络安全大赛
    Android-Framework 时间格式默认使用24小时制、时区为上海
    Vulnhub靶机Infosec_Warrior1渗透
    (十七)VBA常用基础知识:读写text文件
  • 原文地址:https://www.cnblogs.com/sccq-1/p/15893389.html