当前位置: 首页 > news >正文

Ansible(5)——编写 Playbook

目录

一、Play 中的远程用户和特权提升:

1、用户属性:

2、特权升级属性:

(1)启用或禁用特权升级:

(2)定义特权升级方法:

(3)定义进行特权升级的用户:

二、模块:

1、常见模块:

2、模块文档:

3、查看模块:

(1)ansible-navigator doc -l 命令:

(2)ansible-navigator doc module_name 命令:        

(3)ansible-navigator -s doc 命令:

三、在受管主机上运行命令:

1、ansible.builtin.command 模块:

2、ansible.builtin.shell 模块:

3、ansible.builtin.raw 模块:

四、YAML 语法:

1、注释:

2、字符串:

(1)竖线( | ):

(2)大于号( > ):

3、字典:

4、列表:

五、Playbook 推荐格式:


一、Play 中的远程用户和特权提升:

        每个 play 均可指定远程用户及其相应的特权提升,用户可以在与 hosts 或 tasks 关键字相同的 play 上覆盖这些设置。

1、用户属性:

        playbook 中的任务通常通过网络连接对受管主机执行。与临时命令相同,用于这些任务执行的用户帐户取决于 Ansible 配置文件 /etc/ansible/ansible.cfg 中的参数,Ansible 必须以特定用户身份连接到受管主机,才能运行任务。

       通过 remote_user 参数可定义执行任务的用户。不过,如果启用了特权升级,become user 等其他参数也会发生作用。如果用于任务执行的远程用户不合适,可在 play 中使用 remote_user 属性来覆盖。

2、特权升级属性:

(1)启用或禁用特权升级:

        用户可以在 playbook 内定义特权升级参数,使用 become 布尔值参数可启用或禁用特权升级

(2)定义特权升级方法:

        如果启用了特权升级,可使用 become_method 属性来定义 play 要使用的特权升级方法

(3)定义进行特权升级的用户:

        启用了特权升级时,become_user 属性可定义要进行特权升级的用户帐户。

二、模块:

        Ansible 随附打包的大量模块为管理员提供许多用于常⻅管理任务的工具。

1、常见模块:

        类别      模块
        文件

   ansible.builtin.copy :将本地文件复制到受管主机

   ansible.builtin.file :设置文件权限及其他属性
   ansible.builtin.lineinfile :确保特定行是否在文件中
   ansible.posix.synchronize :使用 rsync 同步内容
        软件   ansible.builtin.package :使用操作系统自带的自动检测软件包管理器管理软件包
   ansible.builtin.dnf :使用 DNF 软件包管理器管理软件包
   ansible.builtin.apt :使用 APT 软件包管理器管理软件包
   ansible.builtin.pip :从 PyPl 管理 Python 软件包
        系统   ansible.posix.firewalld :使用 firewalld 管理任意端口与服务
   ansible.builtin.reboot :重新启动计算机
   ansible.builtin.service :管理服务
   ansible.builtin.user :添加、删除与管理用户账户
        网络   ansible.builtin.get_url :通过 HTTP 、HTTPS 或 FTP 下载文件
   ansible.builtin.uri :与 Web 服务交互

2、模块文档:

        管理员可以查阅 Ansible 文档网站 docs.ansible.com 熟悉可用的模块。

        在网站上,管理员可以搜索适用于不同功能的模块。例如,适用于用户和服务管理的模块可以在 Systems Modules 下找到,而适合数据库管理的模块可以在 Database Modules 下找到。对于每一个模块,Ansible 文档网站提供了其功能摘要,以及关于如何通过模块的选项来调用各项具体功能的说明。文档还提供了实用的示例,以演示各个模块及其选项的用法

3、查看模块:

(1)ansible-navigator doc -l 命令:

        要查看当前自动化环境中可用的模块列表,可运行 ansible-navigator doc -l 命令显示模块名称列表以及其功能的概要

注:ansible-navigator doc -l 命令会在 ansible.builtin Ansible Content Collection 中显示模块的短名称,而非 FQCN 。

(2)ansible-navigator doc module_name 命令:        

        使用 ansible-navigator doc module_name 命令将以交互式显示模块的详细文档

注:1)如果指定 -m stdout 选项,终端会显示格式化文档

       2)也可以在交互模式中运行 ansible-navigator collections 命令,浏览当前 automation execution environment 中的 collections 及其模块的文档。

(3)ansible-navigator -s doc 命令:

        ansible-navigator -s doc module_name 命令可查看模块可使用的所有属性的摘要

注:可以使用 ansible-doc 命令查看控制节点上所装模块的文档,其所用选项与 ansible-navigator doc 相同。但是,控制节点上的 ansible-doc 命令不能用于检查文档中是否存在供 ansible- navigator 使用的自动化执行环境。

三、在受管主机上运行命令:

        如果不存在自动化某些任务的模块,则可以通过使用特殊模块在受管主机上运行任意命令。

1、ansible.builtin.command 模块:

        使用 ansible.builtin.command 模块配合 cmd 参数是运行命令最简单的方式。例如,在受管主机上运行 /111 如下图:

注:(1)ansible.builtin.command 模块不幂等,即每次在 play 中指定该任务时,即使没有需要更改的内容,该任务也会运行并报告其已更改受管主机上的某些内容。

       (2)用户可将任务配置为仅在文件存在时运行,以提高任务的安全性。 creates 选项可以让任务仅在文件缺失时运行,且会创建该文件。 removes 选项可以让任务仅在文件存在时运行,且会删除该文件。

                例如,在 /222 文件不存在时运行 /111 如下图:

2、ansible.builtin.shell 模块:

        ansible.builtin.command 模块无法访问 shell 环境变量,也无法执行输入 / 输出重定向和管道之类的 shell 操作。若需使用上述操作,可以通过 ansible.builtin.shell 模块实现,用法与 ansible.builtin.command 模块类似。

3、ansible.builtin.raw 模块:

        ansible.builtin.raw 模块可以绕过模块子系统,直接使用远程 shell 运行命令。在无法安装 Python 的系统(例如路由器等),可以使用该模块。

注:尽可能避免在 playbook 中使用 ansible.builtin.command、 ansible.builtin.shell 和 ansible.builtin.raw 模块。如果必须要使用这些模块, 则最好先尝试使用 ansible.builtin.command 模块,只有在需要 ansible.builtin.shell 或 ansible.builtin.raw 的特殊功能时才使用它们

四、YAML 语法:

1、注释:

        使用注释可提高可读性,在 YAML 中,注释以一个井号字符( # )开头,可存在于任何行(空行或非空行)的末尾,如果在非空行中使用,需在井号之前加一个空格。

2、字符串:

        YAML 中的字符串不要求放在引号里,即使字符串中包含空格。当然如果需要,字符串也可以使用双引号或单引号括起。

        编写多行字符串有两种方式。

(1)竖线( | ):

        使用竖线( 字符可以表示保留字符串中的换行字符

(2)大于号( > ):

        使用大于号( > 字符将表示换行字符转换成空格,且行前的空白将被删除

3、字典:

        YAML 中使用的 key/value 对也称为字典、 散列或关联数组( dictionaries 、hashes ,or associative arrays )。在 key/value 对中,键与值通过冒号和空格组成的分隔符隔开。

注:字典也可使用内嵌块格式表示,其中多个 key/value 对用花括号括起,并由逗号和空格隔开

4、列表:

        在 YAML 中,列表类似于其他编程语言中的数组。一组列表项可使用一个短划线加一个空格作为每个列表项的前缀。

注:列表也可使用内嵌块格式表示,其中多个列表项用方括号括起并由逗号和空格隔开

五、Playbook 推荐格式:

http://www.dtcms.com/a/122427.html

相关文章:

  • SpringMVC的请求-文件上传
  • 如何利用 Java 爬虫获取京东商品详情信息
  • scala总结与spark安装
  • 游戏引擎学习第213天
  • 【scikit-learn基础】--『预处理』之 正则化
  • JetBrains Terminal 又发布新架构,Android Studio 将再次迎来新终端
  • 21 天 Python 计划:MySQL中DML与权限管理
  • Java基础 4.9
  • 如何生成一个requestid
  • 地图服务热点追踪:创新赋能,领航出行与生活
  • Windows 下 Rust 安装全攻略(无需 Visual Studio)
  • 【力扣hot100题】(078)跳跃游戏Ⅱ
  • 用 npm list -g --depth=0 探索全局包的秘密 ✨
  • MySQL中使用索引一定有效吗?如何排查索引效果?
  • uniapp uni-collapse动态切换数据时高度不能自适应
  • 旅行世界宠物养殖合成游戏源码
  • SQL开发的智能助手:通义灵码在IntelliJ IDEA中的应用
  • 银河麒麟V10 Ollama+ShellGPT打造Shell AI助手——筑梦之路
  • 蓝桥杯 B3619 10 进制转 x 进制
  • 4.7学习总结 可变参数+集合工具类Collections+不可变集合
  • 分析一下HashMap内部是怎么实现的
  • JavaScript Date(日期)
  • HTTPS为何仍有安全漏洞?解析加密协议下的攻击面
  • Java后端开发-面试总结(集结版)
  • 11. git restore
  • VLLM V1 part 4 - KV cache管理
  • 数据库无法插入中文字符
  • Spring MVC 处理 HTTP 状态码、响应头和异常的完整示例
  • 12.实现一个简单的依赖注入容器
  • [免费]SpringBoot+Vue高考志愿填报系统【论文+源码+SQL脚本】