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

Ansible自动化配置

清单、配置与Playbook编写

1. Ansible 清单 (Inventory)

概念: 一个文本文件(通常是INI或YAML格式),列出了所有受管节点,并可以对其进行分组和设置变量。

静态清单文件: 手动编写和维护的主机列表文件。

管理: 包括创建、编辑、组织主机和组,以及为不同组的主机设置不同的连接变量(如用户、端口)。

2. Ansible 配置文件 (ansible.cfg)

概念: 用于设置Ansible的默认行为。它包含各种配置参数,如默认清单文件位置、远程用户、是否提示输入密码等。

位置与优先级(从高到低):

ANSIBLE_CONFIG 环境变量指定的文件

当前工作目录下的 ./ansible.cfg

用户家目录下的 ~/.ansible.cfg

系统级的 /etc/ansible/ansible.cfg

Ansible会使用它找到的第一个配置文件。

3. 基础 Playbook 编写

YAML 结构: Playbook使用YAML格式,以 --- 开头,注重缩进(空格,非Tab)。

一个简单Playbook的构成:

---

- name: My first play         # Play的名称

  hosts: webservers           # Play的目标主机组

  become: yes                 # 在此Play中启用特权升级

  tasks:                      # 任务列表开始

    - name: Ensure httpd is installed

      yum:

        name: httpd

        state: latest

    - name: Ensure httpd is running and enabled

      service:

        name: httpd

        state: started

        enabled: yes

自动化内容导航器 (ansible-navigator): 一个基于文本的用户界面(TUI)工具,是红帽Ansible自动化平台的一部分,用于:

交互式地运行和调试Playbook。

浏览文档(:doc <module_name>)。

查看集合内容。

提供比命令行更直观的体验。

4. 高级 Playbook 编写

多个Play: 一个Playbook可以包含多个Play,通常用于在不同组的主机上执行不同的任务序列。

---

- name: Configure web servers

  hosts: webservers

  become: yes

  tasks: ... # 配置Web服务器的任务

- name: Configure database servers # 第二个Play开始

  hosts: dbservers

  become: yes

  tasks: ... # 配置数据库服务器的任务

特权升级 (Privilege Escalation): 让任务以非root用户连接,然后切换到root(或其他特权用户)执行特定命令。这是Ansible的安全最佳实践。

参数:

become: yes: 开启特权升级。

become_method: sudo(默认)/ su / pbrun等: 提权方式。

become_user: root(默认): 要切换到的目标用户。

使用新模块与集合 (Collections):

集合 (Collections): 一种打包和分发Ansible内容(模块、角色、插件等)的新格式。自Ansible 2.9+起,模块大多通过集合分发,而不是核心代码库。

流程:

使用 ansible-navigator :collections 或命令行 ansible-galaxy collection list 查看已安装集合。

使用 ansible-navigator :doc <module_name> 查找模块用法。

在Playbook中,使用完全限定集合名称(FQCN) 调用来自集合的模块,例如 community.general.ufw 或 ansible.builtin.yum。

安装集合: ansible-galaxy collection install <collection_name>

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

相关文章:

  • 手写MyBatis第31弹-用工厂模式重构MyBatis的SqlSession创建过程
  • 小迪安全v2023学习笔记(七十一讲)—— Python安全反序列化反编译格式化字符串安全
  • 深入解析MyBatis中#{}和${}的区别与应用场景
  • Implementing Redis in C++ : E(AVL树详解)
  • spring源码之事务篇(事务管理器整个流程)
  • 笔记 | Anaconda卸载重装
  • Hyperledger Fabric官方中文教程-改进笔记(十五)-从通道中删除组织
  • 【机器学习】3 Generative models for discrete data
  • HTML网页游戏五子棋
  • 电路学习(四)二极管
  • Spring框架相关面试题
  • 【机器学习】4 Gaussian models
  • 【网络运维】Shell 脚本编程:while 循环与 until 循环
  • Python自学笔记11 Numpy的索引和切片
  • Shell脚本-expect
  • VirtualBox安装openEuler24.03
  • 【C++】函数返回方式详解:传值、传引用与传地址
  • 校园跑腿小程序源码 | 跑腿便利店小程序 含搭建教程
  • 如何在 Ubuntu 上安装和配置 Samba ?
  • 2025年渗透测试面试题总结-30(题目+回答)
  • Java 20 新特性及具体应用
  • Cisdem Video Converter for mac 优秀的视频格式转换工具
  • 夜间跌倒检测响应速度↑150%!陌讯多模态骨架追踪算法在智慧养老院的落地实践
  • 埃氏筛|树dfs|差分计数
  • JVM OOM问题排查与解决思路
  • Meta AI 剧变:汪滔挥刀重组,Llama 开源路线告急,超级智能梦碎还是重生?
  • 96、23种设计模式之原型模式(5/23)
  • STM32 USB 之大坑
  • ubuntu中网卡的 IP 及网关配置设置为永久生效
  • Ubuntu24.04环境下causal_conv1d和mamba_ssm安装