首页 > 其他分享 >1初识Ansible

1初识Ansible

时间:2024-07-09 12:21:44浏览次数:17  
标签:配置文件 配置 ansible 初识 Ansible ssh 默认

1 Ansible简介

Ansible官方文档: https://docs.ansible.com/

Ansible 是一个 IT 自动化工具。它能配置系统、部署软件、编排更复杂的 IT 任务,如连续部署或零停机时间滚动更新。

Ansible 用 python 编写,尽管市面上已经有很多可供选择的配置管理解决方案(例如 Salt,Puppet,Chef等),但它们各有优劣,而Ansible的特点在于它的简洁。让 Ansible 在主流的配置管理系统中与众不同的一点便是,它并不需要你在想要配置的每个节点上安装自己的组件。同时提供的一个优点在于,如果需要的话,你可以在不止一个地方控制你的整个基础架构。

1.1 Ansible特性

  • Agentless:不需要再被管理节点上安装客户端,只要有sshd即可
  • 幂等性:多次操作或多次执行不影响结果。
  • Serverless:在服务端不需要启动任何服务,只需要执行命令就行
  • Modules in any language:基于模块工作,可以使用任意语言开发ansible模块
  • YAML, not code:使用yaml语言定制playbook
  • SSH by default:默认使用ssh控制各节点
  • Strong multi-tier solution:可实现多级控制

幂等性详细解释:比如算术运算时数值加0是幂等的,无论加多少次结果都不会改变,而数值加1是非幂等的,每次加1结果都会改变。再比如执行systemctl stop xxx命令来停止服务,当发现要停止的目标服务已经处于停止状态,它什么也不会做,所以多次停止的结果仍然是停止,不会改变结果,它是幂等的,而systemctl restart xxx是非幂等的。Ansible的很多 模块在执行时都会先判断目标节点是否要执行任务,所以,可以放心大胆地让Ansible去执行任务,重复执行某个任务绝大多数时候不会产生任何副作用。

1.2 Ansible的基本组件

  • 核心:ansible
  • 核心模块(Core Modules):这些都是ansible自带的模块
  • 扩展模块(Custom Modules):如果核心模块不足以完成某种功能,可以添加扩展模块
  • 插件(Plugins):完成模块功能的补充
  • 剧本(Playbooks):把需要完成的多个任务定义在剧本中
  • 连接插件(Connectior Plugins):ansible基于连接插件连接到各个主机上,虽然ansible是使用ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件
  • 主机群(Host Inventory):ansible在管理多台主机时,可以选择只对其中的一部分执行某些操作

 1.3 Ansible工作机制

Ansible 在管理节点将 Ansible 模块通过 SSH 协议(或者 Kerberos、LDAP)推送到被管理端执行,执行完之后自动删除,可以使用版本控制系统(git/svn)来管理自定义模块及playbooks。

2 Ansible安装

2.1 yum 安装(推荐)

# 配置epel源
cat > /etc/yum.repos.d/epel.repo <<'EOF'
[epel]
name=epel repo
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/$basearch
enabled=1
gpgcheck=0
EOF
# 安装
yum -y install ansible
 

'EOF',EOF用单引号括起来,可使配置文件中变量$basearch不被转义

2.2 源码安装(推荐)

# 解决依赖关系:
yum install -y python36 python36-devel python36-setuptools gcc libffi-devel openssl-devel

# 配置pip 下载源
mkdir ~/.pip
cat > ~/.pip/pip.conf << 'EOF'
[global] 
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn
EOF

 
# 下载ansible:
wget https://github.com/ansible/ansible/archive/v2.9.17.tar.gz

#解压安装

tar xf v2.9.17.tar.gz
cd ansible-2.9.17/
python3 setup.py build
python3 setup.py install # install 过程安装module失败时,使用pip3手动安装
mkdir /etc/ansible
cp -r examples/* /etc/ansible
 

2.3 pip 安装

Ansible每个版本释放出来之后,都首先提交到Pypi,所以任何操作系统,都可以使用pip工具来安装最新版的Ansible。

pip3 install ansible
 

但要注意,使用各系统的包管理I具(如yum)安装Ansible时自动会提供-些配置文件,如/etc/ansible/ansible. cfg。而使用pip安装的Ansible默认不提供配置文件。

3 Ansible 参数补全功能

从Ansible 2.9版本开始,它支持命令的选项补全功能,它依赖于python的argcomplete插件

安装argcomplete: 

yum -y install python-argcomplete
pip3 install argcomplete
 

安装完成后,激活插件

activate-global-python-argcomplete 
 

重新进去终端,即可使用tab参数补全功能

4 Ansible配置文件管理

4.1 配置文件优先级

ansible的配置文件名为ansible.cfg,它一般会存在于四个地方:

  • ANSIBLE_CONFIG:首先,Ansible命令会检查该环境变量,及这个环境变量将指向的配置文件
  • ./ansible.cfg:当前工作目录,即当前执行ansible指令的目录,如果ANSIBEL_CONFIG环境变量未定义,则优先使用该配置文件
  • ~/.ansible.cfg:当前用户家目录下的一个隐藏文件,如果当前工作目录下不存在ansible.cfg配置文件,则会查找用户家目录下的该隐藏文件
  • /etc/ansible/ansible.cfg:默认配置文件,如果上面两个路径下的ansible.cfg都不存在,则使用该文件

需要说明的是,配置文件中所有的配置项都可以通过环境变量的方式来定义,而环境变量定义的配置项具有最高优先级,会覆盖掉所有配置文件中的配置项

4.2 配置文件详解

Ansible 配置文件采用ini风格进行配置,每一项配置都使用key=value的方式进行配置

4.2.1 配置文件分段说明

ansible.cfg的配置默认分为十段:

  • [defaults]:通用配置项
  • [inventory]:与主机清单相关的配置项
  • [privilege_escalation]:特权升级相关的配置项
  • [paramiko_connection]:使用paramiko连接的相关配置项,Paramiko在RHEL6以及更早的版本中默认使用的ssh连接方式
  • [ssh_connection]:使用OpenSSH连接的相关配置项,OpenSSH是Ansible在RHEL6之后默认使用的ssh连接方式
  • [persistent_connection]:持久连接的配置项
  • [accelerate]:加速模式配置项
  • [selinux]:selinux相关的配置项
  • [colors]:ansible命令输出的颜色相关的配置项
  • [diff]:定义是否在运行时打印diff(变更前与变更后的差异)

4.2.2 配置参数说明

[default]
inventory      = /etc/ansible/hosts
remote_user    = root
ask_pass       = false
log_path       = /var/log/ansible.log

[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

[ssh_connection]
ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s 
host_key_checking = False 
 

配置项说明:

  • inventory:定义默认使用的主机清单
  • remote_user: ansible在操作远程主机时,使用远程主机上的哪个用户身份,默认是root
  • ask_pass:ansible在操作远程主机时,获取远程主机上的用户身份,是否交互提示密码验证,默认为true。如果使用密钥认证的话,建议将其设置为false
  • log_path:默认ansible 执行的时候,并不会输出日志到文件,打开该配置项,所有的命令执行后,都会将日志输出到/var/log/ansible.log文件。
  • become:如果ansible在操作远程主机时,使用的是远程主机上的普通用户,该普通用户是否允许提权
  • become_method:如果允许提权,使用何种提权方式,默认是sudo
  • become_user:提权到哪个用户身份,默认是root
  • become_ask_pass:提权时,是否交互提示密码验证,默认为False
  • ssh_args:ansible通过ssh连接远程被管理机,这里用于定义一些ssh连接时的参数,如-C启用压缩传输,ControlPersist用于提升性能。
  • host_key_checking:通过ssh首次连接远程主机时,由于在本机的~/.ssh/known_hosts文件中并有fingerprint key串,ssh第一次连接的时候一般会提示输入yes/no进行确认将key字符串加入到~/.ssh/known_hosts文件中。将此项设置为False将跳过该确认过程。

标签:配置文件,配置,ansible,初识,Ansible,ssh,默认
From: https://www.cnblogs.com/david-cloud/p/18291525

相关文章

  • 2 Ansible Inventory配置详解
    在使用Ansible来批量管理主机的时候,通常我们需要先定义要管理哪些主机或者主机组,而这个用于管理主机与主机组的文件就叫做Inventory,也叫主机清单。AnsibleInventory是包含静态Inventory和动态Inventory两部分的,静态Inventory指的是在文件中指定的主机和组,动态Inventory......
  • JavaScript介绍、初识(注释语法、书写位置、书写规范)、常量和变量、数据类型Number、
    【一】JavaScript介绍【1】什么是jsjs也是一门编程语言,他可以写后端代码【2】什么是node.js前端由于非常受制于后端,所以有一些人异想天开想要通过js来编写后端代码一统江湖由此开发了一个叫nodejs的工具(支持js跑在后端服务器上)但是并不能完美的实现【3】JavaScript......
  • 【Java探索之旅】初识多态_概念_实现条件
    文章目录......
  • 关于web 第一章 初识HTML以及HTML四大案例 (保姆级教学)
    什么是HTML?HTML是用来描述网页的一种语言。HTML指的是超文本标记语言(Hyper Text Markup Language)HTML不是一种编程语言,而是一种标记语言 (markuplanguage)标记语言是一套标记标签 (markuptag)HTML使用标记标签来描述网页HTML标签HTML标记标签通常被称为H......
  • 初识Java
    1.Oracle网站下载并安装JDK,验证JDK是否安装成功,卸载JDK。版本选择:JDK-8-11-17为LTS版本,较稳定。验证:在命令行窗口输入命令查看。a.看java、javac是否可用。b.看java、javac的版本是否无问题。2.命令行窗口常见命令。D:切换到D盘dir显示所在目录的所有文件和目录cd......
  • Manticore Search初识
    目录参考文献ManticoreSearch是什么ManticoreSearch和Elasticsearch的区别参考文献ManticoreSearch号称Elasticsearch快15倍得全文检索引擎Manticore:afasteralternativetoElasticsearchinC++witha21-yearhistorymanticore官方17亿次纽约出租车测......
  • 【C语言入门】初识C语言:掌握编程的基石
    ......
  • C语言教程-12_1-初识函数
    title:C语言教程-12_1-初识函数tags:[C]categories:C语言教程description:程序功能进一步复杂-使用函数进行分离提要:初步讲解C语言的函数的概念和语法前置知识:学习过数学,知道什么是数学的函数掌握C语言复合语句的概念什么是函数数学意义上的函数近代定义:......
  • 初识XML
    一.XML概述    XML,ExtensibleMarkupLanguage,扩展性标识语言     具体作用为:(1)可作为一种简单的数据库,存储并检索数据;(2)传输约定格式的文件;(3)做软件的配置文件。【配置文件:保存软件设置的文件】  HTML和XML的区别:HTML标签不能自定......
  • ansible使用手册
    Connectionmethodsanddetails—AnsibleCommunityDocumentation1buildyourinventory1.1Thedefaultlocationforthisfileis/etc/ansible/hosts.Youcanspecifyadifferentinventoryfileatthecommandlineusingthe-i<path>optionorinco......