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

ansible进阶版01

ansible进阶版01

  • 欢迎使用Markdown编辑器
      • 最佳实践
        • 保持简单
    • 保持井然有序(有组织的)
        • 经常测试
    • git
      • 工作原理
    • chapter 2
      • 编写ymal格式的主机清单

欢迎使用Markdown编辑器

最佳实践

保持简单
  • 使用yaml的原生语法
  • 使用自带模块
  • 尽量使用专用模块,不要使用shell、script、command模块,因为这些模块没有幂等性。
  • 使用标准风格

保持井然有序(有组织的)

  • 使用友好的变量名:见文知义
  • 保持项目有好的组织方式。例:
.
├── dbservers.yml
├── inventories/
│ ├── prod/
│ │ ├── group_vars/
│ │ ├── host_vars/
│ │ └── inventory/
│ └── stage/
│ ├── group_vars/
│ ├── host_vars/
│ └── inventory/
├── roles/
│ └── std_server/
├── site.yml
├── storage.yml
└── webservers.yml
  • 如果可能,使用动态主机清单
  • 适当的分组,利用分组的好处。一台主机可以属于多个组。
  • 对于重复使用的内容,推荐使用角色role
  • 集中运行playbook
经常测试
  • 在playbook中包含测试代码
  • 使用block/rescue实现任务补救
  • 使用最新的Ansible版本
  • 使用测试工具

git

  • 是一个版本控制工具SCM
  • 可以理解为,为目录打快照

工作原理

  • 三个重要的工作区域
    • 工作区:保存playbook等文件的目录
    • 版本库:保存快照的目录。在工作区中名为.git的目录
    • 暂存区:工作区和版本库之间的缓冲地带
git add
git commit
工作区
暂存区
版本库

文件的状态

  • 未跟踪Untracked:工作区中的文件,既不在暂存区,又没有在版本库中
  • 已暂存Staged:存入暂存区,尚未commit至版本库中的文件
  • 未修改:版本库中的文件和工作区中的文件相同
  • 已修改:文件被commit至版本库之后,有过改动

chapter 2

编写ymal格式的主机清单

  • ansible支持多种格式的主机清单
[student@worktest ~]$ grep -A2 '^\[inventory' /etc/ansible/ansible.cfg
[inventory]
# enable inventory plugins, default: 'host_list', 'script', 'auto', 'yaml', 'ini', 'toml'
#enable_plugins = host_list, virtualbox, yaml, constructed
  • yaml主机清单
# ini格式如下:
[lb_servers]
servera.lab.example.com[web_servers]
serverb.lab.example.com
serverc.lab.example.com[backend_server_pool]
server[b:f].lab.example.com# 以上的ini格式,对应的yaml格式如下:
lb_servers:hosts:servera.lab.example.com:
web_servers:hosts:serverb.lab.example.com:serverc.lab.example.com:
backend_server_pool:hosts:server[b:f].lab.example.com:
  • 在ini格式的主机清单中,没有组名的主机,默认处于ungrouped组中。所有的主机,都在all组中。如notinagroup.lab.example.com在ungrouped组中:
notinagroup.lab.example.com[mailserver]
mail.lab.example.com# 以上ini格式对应的yaml如下:
all:children:ungrouped:notinagroup.lab.example.com:mailserver:mail.lab.example.com:
  • 主机清单变量
[monitoring]
watcher.lab.example.com[monitoring:vars]   # 组变量声明格式
smtp_relay: smtp.lab.example.com    # 变量名: 变量值# 以上ini格式对应的yaml格式如下:
monitoring:hosts:  # 定义组中的主机watcher.lab.example.com:vars:   # 定义组变量smtp_relay: smtp.lab.example.com# ini主机变量示例:
[worktests]
worktest.lab.example.com
localhost ansible_connection=local   # 主机变量
host.lab.example.com# 以上ini格式对应的yaml格式如下:
worktests:hosts:worktest.lab.example.com:localhost:ansible_connection: localhost.lab.example.com:
  • ansible为用户准备了将ini格式的清单转成yaml格式的命令:
[user@demo ~]$ ansible-inventory --yaml -i origin_inventory --list \
> --output destination_inventory.yml
# 注意,转成ymal格式的主机清单,有时候不准确,还需要手工调整。

vim技巧

[student@worktest inventory-yaml]$ vim ~/.vimrc
set ai          # 自动缩进
set et          # 将tab转为空格
set ts=2        # 按一个tab,缩进2个空格
http://www.xdnf.cn/news/417007.html

相关文章:

  • FFmpeg在Android开发中的核心价值是什么?
  • RAG之大规模解析 PDF 文档全流程实战
  • 开源免费无广告专注PDF编辑、修复和管理工具 办公学术 救星工具
  • 服务器相关
  • Java Web 应用安全响应头配置全解析:从单体到微服务网关的实践
  • Vue 2 项目中配置 Tailwind CSS 和 Font Awesome 的最佳实践,加 daisyUI 安装
  • 存算一体芯片对传统GPU架构的挑战:在GNN训练中的颠覆性实验
  • w~大模型~合集30
  • 【后端】SpringBoot用CORS解决无法跨域访问的问题
  • Go 语言即时通讯系统开发日志-day1:从简单消息收发 Demo 起步
  • Vue使用scale方法实现响应式自适应大屏缩放通用组件详解(附完整代码)
  • cursor Too many报错 显示锁机器码怎么办?也就是Cursor的
  • 101alpha---第10
  • 各类型和字节数组互相转换
  • pyenv无法使用pip解决方案
  • Cyrus-Beck算法的计算方法
  • C++类的继承和派生
  • MYSQL事务原理分析(三)
  • 动作识别笔记
  • Linux 详解inode
  • 密码学--希尔密码
  • 电子电器架构 --- 借力第五代架构,驱动汽车产业创新引擎
  • Ansible内置模块之 group
  • vue3+vite 自动导入文件夹下所有路由
  • 【Python算法】最长递增子序列
  • python与nodejs哪个性能高
  • 1688平台开放接口实战:如何通过API获取店铺所有商品数据(Python示例)‌
  • 从PNG到矢量图:星云智控Logo的商用矢量转换全解析-优雅草卓伊凡
  • 三、transformers基础组件之Model
  • Java中进阶并发编程