【ansible】2.实施ansible playbook
目录
1.Ansible 清单的作用是什么,怎么管理静态清单文件和动态清单?
2.Ansible 配置文件的位置在哪,如何验证配置生效?
3.普通用户如何通过配置文件获得root用户身份的管理权限?
3.编写基础 Ansible Playbook 包含哪些关键部分,怎么用自动化内容导航器运行?
5.怎么编写包含多个 play 且带特权升级的 Playbook ,特权升级有啥作用?
5.如何利用自动化内容导航器查找并使用 Ansible 内容集合里的新模块?
6.实施 Ansible Playbook 的完整流程大概是怎样的,从准备到运行涉及哪些步骤?
1.Ansible 清单的作用是什么,怎么管理静态清单文件和动态清单?
- (1)Ansible 清单用于定义受管主机集合,把要管理的主机组织起来,方便集中对这些主机执行自动化任务。
- (2)静态清单管理:静态清单是文本文件(默认在 /etc/ansible/hosts ,常规做法是自定义路径 ),包括INI样式或YAML。按一定格式编写,比如分组列出主机;还能在清单里给主机设置变量,后续 Playbook 中直接引用,管理时可通过编辑这个文本文件增删主机、调整分组和变量 。
- (3)动态清单管理: 根据外部数据源或特定规则,实时、动态地生成主机清单。能够实时反映受管主机环境的变化。例如,在云计算环境中,当新的云服务器实例创建或现有实例被删除时,动态清单可以通过与云平台 API 交互,自动更新主机列表,确保 Ansible 始终管理的是最新的主机资源,无需手动频繁修改静态清单文件。
2.Ansible 配置文件的位置在哪,如何验证配置生效?
- (1)两个配置文件:ansible.cnf: 用于配置多个 Ansible 工具的行为,控制 Ansible 核心功能(如远程连接、特权升级、清单路径)。ansible-navigator.yml:仅控制 Navigator 工具本身的交互和运行方式,用于更改 ansible-navigator 命令的默认选项。
- (2)配置文件位置:Ansible 配置文件查找顺序有优先级,从高到低依次为当前工作目录、用户家目录 ~/、系统配置目录 /etc/。
- (3)验证生效:执行实际任务(如
ansible-navigator all -m ping
或ansible-playbook playbook.yml
),观察配置项(如默认清单路径、并发数)是否按预期生效;也可通过ansible-config dump
查看加载的配置详情。 -
3.普通用户如何通过配置文件获得root用户身份的管理权限?
-
可以在配置文件的【privilege_escalation】部分设置 become=true 参数,默认启动特权升级。
-
become_method 参数会指定如何升级特权,有多个选项可用,但默认为 sudo。become_user 参数指定要升级到的用户,但默认为root。
-
如果所选 become_method 机制要求用户输入密码才能升级特权,可以在配置文件中设置 become_ask_pass=true 参数。
3.编写基础 Ansible Playbook 包含哪些关键部分,怎么用自动化内容导航器运行?
- (1)Playbook 关键部分:Playbook是YAML格式的文本文件。通常以“---”开头,结尾用“…”结束(可省略),包括name(记录任务用途)、hosts(指定play中任务所针对的主机)、tasks(指定该play运行的任务列表)等。
- (2)用导航器运行:安装好自动化内容导航器(ansible-navigator)后,在终端执行 ansible-navigator run playbook.yml(playbook.yml是编写好的Playbook文件名)命令,它会以交互界面运行 Playbook,还能查看执行过程、日志等,方便调试和部署。
-
4.为什么运行需要输入密码的 Playbook 时,需要禁用 Ansible Navigator 的 Playbook 工件?
- Playbook 工件是 Ansible Navigator 生成的临时中间文件,用于交互式调试、执行环境隔离(如容器化运行),会注入额外运行时配置;
- 当设置
become_ask_pass: true
(需手动输入sudo
密码)时,工件生成会阻断密码交互流程:临时文件机制无法正确传递终端输入的密码,导致特权升级失败; - 解决方案:通过
ansible-navigator run -m stdout playbook.yml
禁用工件,使用标准输出模式,恢复正常的密码交互。
5.怎么编写包含多个 play 且带特权升级的 Playbook ,特权升级有啥作用?
(1)编写方法:在 Playbook 里按 YAML 语法,用- name: ...形式依次定义多个play,各自独立设置hosts、become等参数。
(2)特权升级配置:添加become: yes(表示启用特权升级);还可通过指定升级方式become_method: sudo(默认 sudo);也能设置remote_user:remoteuser将ansible配置为首次登录在受管主机上使用其他用户账户,在单个任务中单独设置become:yes/become_method:sudo,仅该任务启用特权升级。
(3)特权升级作用:在管理主机时,很多操作(如安装系统软件、修改系统配置文件 )需要超级用户权限,特权升级能让 Ansible 以提升后的权限执行任务,确保作能成功完成,避免因权限不足失败 。
5.如何利用自动化内容导航器查找并使用 Ansible 内容集合里的新模块?
查找模块:运行 ansible-navigator collections search 关键词(关键词是想找的模块功能相关词 ),或者进入ansible-navigator的交互界面通过Collections查找。
使用模块:安装集合:如 ansible-galaxy collection install community.docker ;在Playbook中声明集合:collections:- community.docker,或使用完整模块名 community.docker.docker_container,按文档配置参数。
6.实施 Ansible Playbook 的完整流程大概是怎样的,从准备到运行涉及哪些步骤?
准备阶段:构建清单(整理受管主机,按需求分组、设变量 );确认或调整 Ansible 配置文件(可选,改默认设置 )。
编写阶段:按需求写 Playbook ,包含任务、可能的变量、处理器等,复杂场景设计多个 play 、特权升级 。
运行与调试阶段:用 ansible-navigator 或ansible-playbook命令运行 Playbook ;通过查看输出日志,用导航器的交互功能调试(如检查任务执行顺序、模块参数是否正确 );根据结果优化 Playbook ,直到在受管主机上成功自动执行任务 。