Ansible自动化安装部署及使用

news2024/11/26 4:51:09

目录

前言

一、环境概况

修改主机名(可选项)

二、安装部署

1.安装epel扩展源

2.安装Ansible

3.修改Ansible的hosts文件

4.生成密钥

三、Ansible模块使用介绍

Command模块

Shell模块

User模块

 Copy模块

File模块

Hostname模块

Yum模块

Service和System模块

Setup 模块


前言

Ansible 是一种开源的自动化工具,用于配置管理、应用程序部署和任务自动化。它采用简单易懂的 YAML 语法和基于 SSH 协议的远程执行,能够实现快速、可靠的自动化配置和部署。

 Ansible 的一些主要特点和功能:

  1. 简单易用: Ansible 使用 YAML 格式的声明性语言,使得编写和阅读 Playbooks(Ansible 的配置文件)变得非常直观和易于理解。无需编写复杂的脚本或程序代码,就可以完成大部分配置和部署任务。

  2. 无代理架构: Ansible 采用基于 SSH 的无代理架构,不需要在目标主机上安装任何额外的代理或客户端软件。这简化了部署和管理过程,并提供了更强的安全性。

  3. 模块化: Ansible 提供了丰富的模块库,用于执行各种操作,如包管理、文件操作、服务管理、用户管理等。模块化的设计使得用户可以轻松地扩展和定制 Ansible,以满足特定的自动化需求。

  4. 剧本化: Ansible 使用 Playbooks 来描述配置和部署任务。Playbooks 是用 YAML 编写的文本文件,可以定义一系列任务和主机组,以及执行这些任务的顺序和条件。这使得用户可以将复杂的配置和部署过程分解为可管理的、可重用的剧本。

  5. 多平台支持: Ansible 可以在多种操作系统和云平台上运行,包括 Linux、Windows、macOS、VMware、AWS、Azure、Google Cloud 等。这使得 Ansible 成为一个通用的自动化工具,可用于管理多样化的 IT 环境。

  6. 可扩展性: Ansible 可以集成到现有的工具链和流程中,并与其他自动化和编排工具(如 Jenkins、Kubernetes)进行集成。此外,Ansible 还具有丰富的插件和扩展机制,可以根据需要进行功能定制和扩展。

一、环境概况

192.168.159.128   ------------> Ansible服务端(管理端)    

192.168.159.129   ------------> 客户端(受控端)

修改主机名(可选项)

修改Ansible服务端的主机名,客户端不修改

 hostnamectl set-hostname ansible.server

 hostname ansible.server

reboot后永久生效

二、安装部署

1.安装epel扩展源

yum install -y epel-release	

2.安装Ansible

 yum install -y ansible

3.修改Ansible的hosts文件

cd /etc/ansible/
tree
.
├── ansible.cfg			#ansible的配置文件,默认即可
├── hosts				#ansible的主机清单,用于存储需要管理的远程主机的相关信息,需要编辑
└── roles/				#公共角色目录,默认即可


vim hosts

#webservses行取消注释,添加被控端IP
[webservers]
## alpha.example.org
## beta.example.org
192.168.159.129
## 192.168.1.110

4.生成密钥

Ansible 的工作原理是通过 SSH 连接到远程主机,在目标主机上执行预定义的任务或命令,所以需要配置免密 

ssh-keygen

ssh-copy-id root@192.168.159.129

三、Ansible模块使用介绍

现在开始ansible就已经可以开始使用了 

  • 查看Ansible版本
[root@ansible ansible]# ansible --version
ansible 2.9.27
  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, Jun 20 2023, 11:36:40) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
[root@ansible ansible]#
  • 查看pingtelnet 模块的简要描述和摘要
ansible-doc -s ping
ansible-doc -s telnet

  • 用于查看有关 telnet 模块的文档,类似于man手册
ansible-doc telnet

Command模块

格式

ansible <hosts> -m command -a "<command>"

ansible webservers -m command -a "free -h"
ansible 192.168.159.129 -m command -a "free -h"
ansible all -m command -a "free -h"
ansible webservers -a "uname -a"

<hosts>可以使用以上三种方式指定

  • webservers:hosts配置文件中的【webservers】组执行某些命令
  • 实际IP:指定IP运行某些命令
  • all:代表所有hosts主机,包含hosts配置文件中的【dbservers】组

Shell模块

格式

ansible <hosts> -m shell -a "<command>"

ansible all -m shell -a "for i in {1..5}; do touch \$i.txt;done && ls -la *.txt"

1.上述示例当中的touch命令部分为什么在$符号前面要加上转义符?

ansible webservers -m shell -a "df -hT|grep '/$' | awk '{print $6}'"

ansible webservers -m shell -a "df -hT|grep '/$' | awk '{print \$6}'"

2.上述示例当中的awk命令部分为什么在$符号前面要加上转义符?

解释:为了确保 $6 不被解释为命令行变量,而是作为字符串的一部分传递给远程主机执行,需要使用转义符 \ 进行转义。\$6 的目的是将 $6 这个字符串传递给远程主机而不被本地 Shell 解释为变量

所以正确写法是这样的:

ansible all -m shell -a "for i in {129,130}; do ping -c 1 192.168.159.\$i; done"

!!!错误写法示范:

User模块

格式

ansible <hosts> -m user -a "<options>"

<hosts>:           指定要管理用户的目标主机,可以是单个主机或者主机组的名称。
-m user:           通过 -m 参数指定要使用的模块为 user。
-a "<options>":    使用 -a 参数传递模块的选项。选项可以是创建用户、修改用户属性或删除用户等操作。

user 模块的常用选项包括:
 
  name:            指定用户的名称。
  password:        指定用户的密码(已加密)。
  state:           指定用户的状态,present表示创建,absent表示删除。
  groups:          指定用户所属的组。
  shell:           指定用户的登录 Shell。
  system=yes|no:   是否为系统账号。
  uid:             用户uid
  move_home=yse|no:如果设置的家目录已经存在,是否将已经存在的家目录进行移动
  password:        用户的密码,建议使用加密后的字符串
  comment:         用户的注释信息
  remove=yes|no:   当state=absent时,是否删除用户的家目录
  comment:         指定用户的注释信息。
ansible webservers -m user -a 'name="wang" state=present password=123456 groups=root shell="/sbin/nologin"'
ansible webservers -m command -a 'grep "wang" /etc/shadow'

 Copy模块

格式:

ansible <hosts> -m copy -a "<options>"

<hosts>:               指定要复制文件的目标主机,可以是单个主机或者主机组的名称。
-m copy:               通过 -m 参数指定要使用的模块为 copy。
-a "<options>":        使用 -a 参数传递模块的选项。选项包括源文件路径、目标文件路径、权限等。

copy 模块的常用选项包括:
  src:                指定源文件或目录的路径。可以是绝对路径或相对路径。
  dest:               指定目标文件或目录的路径。可以是绝对路径或相对路径。
  mode:               指定目标文件的权限模式,例如 0644。
  owner:              指定目标文件的所有者。
  group:              指定目标文件的所属组。
  backup:             指定是否创建备份文件。
  force:              指定是否强制复制,即使目标文件已经存在。
ansible webservers -m copy -a 'src="/root/shdir/xin.sh" dest="/root/xin_bak.sh" owner=root group=root mode=777'
ansible webservers -m shell -a "bash /root/xin_bak.sh"

File模块

格式:

ansible <hosts> -m file -a "<options>"

<hosts>:                 指定要操作文件的目标主机,可以是单个主机或主机组的名称。
-m file:                 通过 -m 参数指定要使用的模块为 file。
-a "<options>": 使用 -a 参数传递模块的选项。选项包括要操作的文件路径、属性变更等。

file:                   模块的常用选项包括:
  path:                 指定要操作的文件或目录的路径。可以是绝对路径或相对路径。
  mode:                 指定文件的权限模式,例如 0644。
  owner:                指定文件的所有者。
  group:                指定文件的所属组。
  state:                指定文件的状态,可以是 file(文件存在)、directory(目录存在)或 
  absent(文件不存在)。
  recurse:              指定是否递归地应用更改到目录及其子目录。
  follow:               指定是否跟随符号链接进行更改。
ansible webservers -m file -a 'path="/root/xin_bak.sh" owner=root group=root mode=755 state=file'
ansible webservers -m command -a "ls -la /root/xin_bak.sh"

Hostname模块

格式:

ansible <hosts> -m copy -a "<options>"

ansible webservers -m hostname -a "name=test"
ansible webservers -m command -a "hostname"       

Yum模块

格式:

ansible <hosts> -m yum -a "name=<package_name> state=<state>"

<hosts>:                     指定要操作文件的目标主机,可以是单个主机或主机组的名称。
-m file:                     通过 -m 参数指定要使用的模块为 file。
-a "<options>":              使用 -a 参数传递模块的选项。选项包括要操作的文件路径、属性变更等。

yum:                        模块的常用选项包括:
  name:                     要安装的包的名字
  state:                    present(安装)、absent(卸载)或 latest(更新为最新版本)。
  update_cache:              是否刷新 YUM 缓存。默认情况下为 yes,表示会自动更新缓存。设置为 no 则不刷新缓存。  
  disable_gpg_check:         是否禁用 GPG 检查。默认为 no,表示会进行 GPG 检查。设置为 yes 则禁用 GPG 检查。
  enablerepo 和 disablerepo: 控制仓库的启用和禁用。可以指定要启用或禁用的仓库名称。多个仓库以逗 号分隔。
  installroot:               指定要安装软件包的根目录路径。
  conf_file:                 指定要使用的 YUM 配置文件路径。
  vars:                      用于传递额外的变量给 Ansible。
ansible webservers -m yum -a 'name=dnsmasq state=present'
ansible webservers -m shell -a "systemctl restart  dnsmasq && systemctl enable dnsmasq && systemctl status dnsmasq"

Service和System模块

格式:

ansible <hosts> -m service -a "name=<service name> enabled=<yes/no> state=<state>"

<hosts>:                       指定要操作文件的目标主机,可以是单个主机或主机组的名称。
-m file:                       通过 -m 参数指定要使用的模块为 file。
-a "<options>":                使用 -a 参数传递模块的选项。选项包括要操作的文件路径、属性变更等。

service:                      模块的常用选项包括:
    name:                      <服务名称>
    state:                     <服务状态>,started|stopped|restarted
    enabled:                   <是否自启动>,yes|no

    pattern:                   <进程匹配模式>
        .(点):               匹配任意单个字符。
        *:                     匹配前一个字符的零次或多次重复。
        +:                     匹配前一个字符的一次或多次重复。
        ?:                     匹配前一个字符的零次或一次重复。
        ^:                     匹配字符串的开始位置。
        $:                     匹配字符串的结束位置。
        []:                    用于定义字符集,匹配其中的任意一个字符。
        ():                    创建捕获组,用于分组匹配。

    sleep:                     <等待时间>
    timeout:                   <超时时间>
    runlevel:                  <运行级别>
    args:                      <额外参数>

system:                       模块命令格式:
    name:                      <项名称>
    state:                     <系统状态>
    value:                     <要设置的值>,started|stopped|restarted
    enabled:                   <是否自动加载>,yes|no
    regenerate:                <是否重新生成>
    system_file:               <系统文件路径>
    runtime_file:              <运行时文件路径>
    config_file:               <配置文件路径>
   

Setup 模块

格式:

ansible <hosts> -m setup -a "name=<service name> enabled=<yes/no> state=<state>"

<hosts>:                       指定要操作文件的目标主机,可以是单个主机或主机组的名称。
-m file:                       通过 -m 参数指定要使用的模块为 file。
-a "<options>":                使用 -a 参数传递模块的选项。选项包括要操作的文件路径、属性变更等。

setup:                        模块的常用选项包括:
  gather_subset:              指定要收集的子集信息的列表。默认情况下,会收集所有可用的信息。可以使用 hardware, network, virtual, ohai, facter, ohai_timed, puppet, vagrant 或 all 来指定子集。
  fact_path:                  用于指定自定义信息(facts)路径的列表。Ansible 会搜索这些路径以查找自定义事实。
  filter:                     过滤已收集的信息(facts),仅返回匹配指定模式的结果。
  gather_timeout:             设置收集事实的超时时间,单位为秒。
  gather_timeout_multiplier:  用于调整超时时间的倍数,默认为 1。
  gather_timeout_retry:       在超时后重试的次数,默认为 1。
  cache_valid_time:           设置缓存的有效时间,单位为秒。
  fact_caching:               启用或禁用缓存功能,可以是 memory、jsonfile、json、yaml 或 text。
ansible webservers -m setup -a "gather_subset=hardware"

ansible webservers -m setup -a "filter=*device_link*"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1167354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI天花板打开,昇腾如何“全周期”赋能人才成长?

作者 | 曾响铃 文 | 响铃说 竞赛已经成为培养与选拔人才行之有效的方式&#xff0c;如火如荼的AI领域同样如此。 不久前&#xff0c;昇腾AI创新大赛2023全国总决赛&#xff08;以下简称“大赛”&#xff09;举行&#xff0c;来自全国22个赛区的78支团队经过激励比拼&#xf…

SNAP打开影像失败No appropriate reader found

SNAP打开影像失败No appropriate reader found 问题描述 原因 这是我前几周用的&#xff0c;还有这些模块&#xff0c;但不知道何时&#xff0c;这些模块就少了 重装一下吧&#xff0c;可能是误删东西了 解决方案 重装了一下&#xff0c;就能够打开了 装完之后又有这些模…

强大日志查看器,助力数据联动分析

前言 我们曾讨论过观测云查看器强大的查询筛选和搜索功能&#xff0c;能够帮助用户快速、精准地检索数据&#xff0c;定位故障问题&#xff08;参见《如何使用查看器筛选、搜索功能进行数据定位&#xff1f;》&#xff09;。除此之外&#xff0c;日志查看器不仅可以帮助我们收…

TensorFlow案例学习:使用 YAMNet 进行迁移学习,对音频进行识别

前言 上一篇文章 TensorFlow案例学习&#xff1a;简单的音频识别 我们简单学习了音频识别。这次我们继续学习如何使用成熟的语音分类模型来进行迁移学习 官方教程&#xff1a; 使用 YAMNet 进行迁移学习&#xff0c;用于环境声音分类 模型下载地址&#xff08;需要科学上网&…

HTML基础知识——URL、文本标签、链接标签、图片标签、列表标签

目录 URL&#xff08;统一资源定位符&#xff09; 概述 网址的组成部分 协议 主机 端口 路径 查询参数 锚点 文本标签 示例&#xff1a; 链接标签 示例&#xff1a; 图片标签 示例&#xff1a; 列表标签 示例&#xff1a; URL&#xff08;统一资源定位符&#xff09;…

跳跳狗小游戏

欢迎来到程序小院 跳跳狗 玩法&#xff1a;一直弹跳的狗狗&#xff0c;鼠标点击屏幕左右方向键进行弹跳&#xff0c;弹到不同物品会有不同的分数减扣&#xff0c;规定的时间3分钟内完成狗狗弹跳&#xff0c;快去跳跳狗吧^^。开始游戏https://www.ormcc.com/play/gameStart/198…

B端设计必看的9个开源组件库,值得收藏!

如果你想开发一款To B Web端产品&#xff0c;如何选择令人眼花缭乱的开源组件库&#xff1f;行业团队常用的B端开源组件库是什么&#xff1f;今天&#xff0c;我们将为您带来入门级开源组件库的介绍。你可以先有一个大致的了解&#xff0c;希望能对你有所帮助。未来&#xff0c…

【带货案例】从美区十月带货达人身上寻找商品爆款秘诀!

2023只剩下最后两个月&#xff0c;年底也是各大商家冲刺卖货的黄金时期&#xff01; 带货过程中的一个重要环节即【达人营销】&#xff0c;背受跨境卖家关注。 下面选取美区十月带货达人TOP3&#xff0c;分析其带货秘诀。 据超店有数达人榜单显示&#xff1a;美区十月带货达人…

山东专业商品信息管理系统解决方案,智能管理多门店,可定制-亿发

众所周知&#xff0c;现如今商品种类繁多、品牌众多、商品信息量庞大&#xff0c;同时商品销售价格经常变动&#xff0c;还需管理商品批次&#xff0c;避免库存积压和过期&#xff0c;这给山东地区的传统企业在商品管理上带来了极大的挑战。 随着数字化时代的来临&#xff0c;山…

Java Web 学习笔记(一) —— MySQL(1)

目录 1 SQL简介2 MySQL基本语法2.1 语法规则2.2 数据类型 3 DDL3.1 操作数据库3.2 操作表 4 DML4.1 添加数据4.2 修改数据4.3 删除数据 5 DQL5.1 基础查询5.2 条件查询5.3 排序查询5.4 聚合查询5.5 分组查询5.6 分页查询 1 SQL简介 SQL &#xff1a;Structured Query Language&…

iOS App Store上传项目报错 缺少隐私政策网址(URL)解决方法

iOS App Store上传项目报错 缺少隐私政策网址(URL)解决方法 一、问题如下图所示&#xff1a; 二、解决办法&#xff1a;使用Google浏览器&#xff08;翻译成中文&#xff09;直接打开该网址 https://www.freeprivacypolicy.com/free-privacy-policy-generator.php 按照要求…

蓝桥杯每日一题2023.11.3

题目描述 承压计算 - 蓝桥云课 (lanqiao.cn) 题目分析 将重量存入a中&#xff0c;每一层从上到下进行计算&#xff0c;用d进行计算列的重量&#xff0c;当前d的重量应为正上数组和右上数组的个半和并加上自身的重量 计算到30层记录最大最小值&#xff0c;进行比例运算即可 …

Ubuntu20.04搭建RISC-V和qemu环境

1. 前言 risc-v是一个非常有潜力的指令集框架&#xff0c;最近对其产生了浓厚的兴趣&#xff0c;由于之前对于这方面的知识储备很少&#xff0c;在加上网上的教程都是点到为止&#xff0c;所以安装过程异常曲折。好在最后一步一步积累摸索&#xff0c;终于利用源码安装完成。看…

python对象方法是什么

python对象方法是什么 概念 1、在类中&#xff0c;对象调用的函数称为对象方法&#xff0c;一般也称为方法。 定义格式 class 类名:def 函数1(self, 参数1, 参数2):...实例 2、在定义对象方法时&#xff0c;第一个参数默认使用self&#xff0c;这个参数在定义时必须存在&am…

new Proxy

Proxy&#xff1a;代理 - JavaScript |MDN网络 (mozilla.org) 首先要确定Proxy的入参&#xff1a;new Proxy 的两个参数分别是目标对象和处理程序。 如下&#xff0c;写了个只有两个方法的Proxy let target {name:张三,age:18}; let handler {get(target, property, recei…

今天,他们一起聊了聊数据融合|CNCC 2023

2023 年 10 月 26-28 日&#xff0c;第二十届中国计算机大会(CNCC 2023)在沈阳市举行&#xff0c;27 日下午&#xff0c;由 OceanBase 申办的「下一代数据融合技术趋势」技术论坛圆满落幕。 会上&#xff0c;OceanBase 联合多位数据库领域知名学者、专家围绕 HTAP 工作负载融合…

Vector CANape 21安装

系列文章目录 文章目录 系列文章目录简介下载 Vector CANape 21 简介 CANape基础操作介绍&#xff1a;工程创建&#xff0c;测量&#xff0c;标定&#xff0c;离线分析操作。 下载 Vector CANape 21 如下是Vector CANape21的下载安装步骤&#xff1a; https://www.vector.co…

uni-app 开发的H5 定位功能部署注意事项

一、H5部署的时候&#xff0c;如果设计到定位功能&#xff0c;需要注意以下几点 1、打包部署的时候需要在Web配置-定位和地图里面勾选一个地图&#xff0c;并配置key 2、打包部署需要域名是https协议的&#xff0c;大多数现代浏览器要求在HTTPS协议下才能够访问地理位置信息&a…

【Python基础知识四】控制语句

Python基础知识&#xff1a;控制语句 1 条件控制1.1 if语句1.2 match...case语句 2 循环语句2.1 for循环2.2 for...else语句2.3 while循环2.4 while 循环使用 else 语句2.5 无限循环 参考 Python控制语句主要包含顺序、选择和循环三个方面&#xff0c;下面主要从这三方面进行介…

winscp文件增量同步到linux服务器

一&#xff0c;点击同步 场景&#xff1a;在做服务器迁移的时候&#xff0c;文件好几十个G一天也迁移不完&#xff0c;每天还有增量的文件&#xff0c;先全量同步一次&#xff0c;然后再用增量同步&#xff0c;然后你用winscp的同步工具&#xff0c;进增量同步。 将本地文件同…