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 相关文章)

Linux 源码安装Ansible 参考篇的更多相关文章

  1. mysql-5.5 for linux源码安装

    mysql-5.5 for linux源码安装 1.使用Yum安装依赖软件包 # yum install -y gcc gcc-c++ gcc-g77 autoconf automake bison  ...

  2. 源码安装Ansible

    一.Ansible介绍 ansible是一款的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批 ...

  3. Linux源码安装JDK1.8

    Linux源码安装Java 1.到官网下载 jdk-8u131-linux-x64.tar.gz 官网地址:http://www.oracle.com/technetwork/java/javase/ ...

  4. Linux源码安装软件

    Linux环境下 源码编译安装软件 ==== 1. 下载,步骤略 ==== 2. 验证,部分官方下载同时提供签名,MD5,sha1,sha256等校验信息. $ gpg --verify gnupg- ...

  5. Linux 源码安装 FFmpeg

    加班次数频繁,已经快一年没有写博了.由于此次在项目中使用到了 FFmpeg 来处理音视频,顾记录下在 Linux 系统中源码安装 FFmpeg 以便不时之需. 1. 安装 yasm yasm 是一个汇 ...

  6. linux源码安装mysql,shell编程学习,ubuntu

    一.mysql安装 以源码安装的方式编译和安装Mysql 5.6. 1.卸载旧版本 rpm -qa | grep mysql 检查是否有旧版本 查询结果:mysql-libs-5.1.73-7.el6 ...

  7. linux源码安装软件的一般方法

    rhel系统貌似安装不了xmgrace,配置的时候居然说要那个M*tif库.百度了一下,需要openmotif库,然后用root账户想要用yum安装一下这个库,搞了好久没搞懂.后面搞明白了,原因竟是因 ...

  8. Linux源码安装RabbitMQ高可用集群

    1.环境说明 linux版本:CentOS Linux release 7.9.2009 erlang版本:erlang-24.0 rabbitmq版本:rabbitmq_server-3.9.13 ...

  9. Linux源码安装mysql步骤

    创建文件夹: mkdir  /usr/local/webserver 安装必要依赖包      yum -y install gcc gcc-c++ make ncurses-devel安装cmake ...

随机推荐

  1. Python_jsonPath模块的使用

    jsonpath简介 如果有一个多层嵌套的复杂字典,想要根据key批量提取value,还是比较繁琐的.jsonPath模块就能解决这个痛点,接下来我们来学习一下jsonpath模块. 因为jsonpa ...

  2. SCryptPasswordEncoder 单向加密 --- 心得

    1.前言 * BCryptPasswordEncoder相关知识:* 用户表的密码通常使用MD5等不可逆算法加密后存储,为防止彩虹表破解更会先使用一个特定的字符串(如域名)加密,然后再使用一个随机的s ...

  3. 安装devstack中遇到的一些问题整理

    1.执行stack.sh文件后提示 ./stack.sh:528:check_path_perm_sanity /opt/devstack/functions:582:die [ERROR] /opt ...

  4. Scrapy的Item_loader机制详解

    一.ItemLoader与Item的区别 ItemLoader是负责数据的收集.处理.填充,item仅仅是承载了数据本身 数据的收集.处理.填充归功于item loader中两个重要组件: 输入处理i ...

  5. Flink SQL任务自动生成与提交

    目录 起因 思路 实现 1.配置 2.界面如下 3.环境 问题 起因 事情的起因,是看到一篇公众号文章Apache Flink 在汽车之家的应用与实践,里面提到了"基于 SQL 的开发流程& ...

  6. 你管这叫代理模式(Proxy Pattern)

    代理模式   代理模式即给一个真实类提供一个代理类,该代理类代替真实类完成其功能,一般还可在代理类上添加一些真实类不具有的附加功能,通俗来讲代理模式就是我们生活中常见的中介,代理模式又可分为静态代理和 ...

  7. docker 修改容器env配置

    docker 修改容器env配置 场景:修改zabbix数据库密码 zabbix容器构成: 数据库:zabbix-mysql server端:zabbix-server-mysql web端:zabb ...

  8. PostgreSQL逻辑订阅

    测试环境:PostgreSQL 13.2 1.逻辑订阅简介 由于物理复制只能做到这个集群的复制,不能正对某个对象(表)进行复制,且物理复制的备库只能读,不能写.相反,逻辑订阅同时支持主备库读写,且可以 ...

  9. 如何使用 pytorch 实现 yolov3

    前言 看了 Yolov3 的论文之后,发现这论文写的真的是很简短,神经网络的具体结构和损失函数的公式都没有给出.所以这里参考了许多前人的博客和代码,下面进入正题. 网络结构 Yolov3 将主干网络换 ...

  10. 社交网络分析的 R 基础:(一)初探 R 语言

    写在前面 3 年的硕士生涯一转眼就过去了,和社交网络也打了很长时间交道.最近突然想给自己挖个坑,想给这 3 年写个总结,画上一个句号.回想当时学习 R 语言时也是非常戏剧性的,开始科研生活时到处发邮件 ...