【Ansible】我想在Amazon EC2上使用ansible-navigator~第2章:执行ansible-navigator~

首先

这是上一篇文章(【Ansible】在Amazon EC2上使用ansible-navigator~第1章:创建执行环境镜像~)的续篇。

本次作为第2章,我们将进行”ansible-navigator的执行”。同时,我们还打算尝试通过”ansible-navigator执行ansible-lint”。

太长不看

ansible-playbookコマンドはansible-navigator runコマンドに変化した
ansible-navigatorには実行した内容のリプレイ機能がある
ansible-navigator 2.0.0からansible-lintが呼び出せるようになった

前提 tí)

    • 前回の記事(【Ansible】Amazon EC2でansible-navigatorを使いたい~第1章:実行環境イメージの作成~)の手順にもとづいて、実行環境イメージが作成してあること

記事の内容をもとに作業をしてみたい方のみ

详细了解

创建ansible-navigator的配置文件

根据 Ansible 文档 > ansible-navigator 设置的参考,创建 ansible-navigator 的配置文件。
将所需的文件添加到上一篇文章创建的文件夹中。

/home/ec2-user/ansible_test

execution-environment.yml

ansible.cfg

requirements.yml

requirements.txt

context

ansible-navigator.yml ☆ ここから下を新規追加

.ansible-lint

playbooks

test.yml

    1. 切换到操作目录

 

    1. $ cd ~/ansible_test

创建ansible-navigator.yml文件

自动创建日志存储位置./logs,无需手动创建

$ vi ansible-navigator.yml

ansible-navigator.yml

ansible-navigator:
ansible:
config:
path: ansible.cfg
execution-environment:
container-engine: podman
enabled: true
image: localhost/ansible-test:v0.0.1
pull:
policy: never
logging:
append: true
file: ./logs/ansible-navigator.log
level: debug
mode: stdout
playbook-artifact:
enable: true
replay: ./logs/artifact/replay.json
save-as: ./logs/artifact/artifact.json
ansible-lint:
config: .ansible-lint

创建ansible-lint配置文件
$ vi .ansible-lint

.ansible-lint

use_default_rules: true

2. 创建并执行用于确认操作的Playbook。

    1. 创建用于确认操作的Playbook(test.yml)

 

    1. $ mkdir playbooks

 

    1. $ vi playbooks/test.yml

test.yml

– name: “获取EE镜像信息”
hosts: localhost
gather_facts: false
tasks:
– name: “获取ansible事实”
ansible.builtin.setup:
gather_subset:
– “min”

– name: “显示ansible事实”
ansible.builtin.debug:
var: ansible_facts.env

– name: “获取ansible版本”
ansible.builtin.command: “ansible –version”
register: r_ansible_version
changed_when: false

– name: “显示r_ansible_version”
ansible.builtin.debug:
var: r_ansible_version.stdout_lines

– name: “获取pip包信息”
community.general.pip_package_info:
clients: “pip”
register: r_pip_package

– name: “显示r_pip_info”
ansible.builtin.debug:
var: >-
r_pip_package.packages.pip |
json_query(“*[0].{name: name, version: version}”)

执行Playbook

要使用ansible-navigator执行Playbook,请使用ansible-navigator run命令
有关ansible-playbook和ansible-navigator命令的比较,请参见自动导航器命令比较

$ ansible-navigator run playbooks/test.yml

使用artifact来确认Playbook的重放

ansible-navigator具有重放功能,用于确认执行内容

$ ansible-navigator replay ./logs/artifact/artifact.json

3. 运行 ansible-lint

根据 [Ansible] ansible-navigator 2.0.0 機能ピックアップ Part 1: 追加サブコマンド編的文章,据说从ansible-navigator 2.0.0开始可以调用ansible-lint,所以让我们实际去试试看。

    1. 创建用于ansible-lint测试的playbook

 

    1. $ vi playbooks/lint-test.yml

lint-test.yml

– name: “lint test”
hosts: localhost
gather_facts: false
vars:
test: “test var”
tasks:
– debug:
msg: “{{test}}”

运行ansible-lint
$ ansible-navigator lint lint-test.yml

确认以下两个问题被指出:

unnamed-task:存在未命名的任务
playbooks/lint-test.yml:8 Task/Handler: debug msg={{test}}
var-spacing:变量前后应添加空格:{{test}}
playbooks/lint-test.yml:8 Task/Handler: debug msg={{test}}

修改ansible-lint配置文件

编辑ansible-lint的配置文件,将unnamed-task排除在外
在skip_list中添加要排除的规则

$ vi .ansible-lint

.ansible-lint

use_default_rules: true
skip_list: # 添加
– unnamed-task

再次运行ansible-lint
$ ansible-navigator lint lint-test.yml

不再指出unnamed-task问题

var-spacing:变量前后应添加空格:{{test}}
playbooks/lint-test.yml:8 Task/Handler: debug msg={{test}}

最后

    • 第2章では、実際にansible-navigatorを使ってplaybookを実行しました。

 

    リプレイ機能やansible-lintが使えるようになり、より便利になったと感じます

请提供网址作为参考。

【Ansible】Amazon EC2でansible-navigatorを使いたい~第1章:実行環境イメージの作成~

前回の記事

Ansible Documentation > ansible-navigator settings

ansible-navigatorの設定ファイルの書き方

Red Hat Customer Portal > 1.4. 自動コンテンツナビゲーターコマンドの比較

ansible-playbookとansible-navigatorコマンドの比較

[Ansible] 「つまずき Ansible 【Part36】ansible-navigator」ふりかえり

ansible-navigatorの使い方

[Ansible] ansible-navigator 2.0.0 機能ピックアップ Part 1: 追加サブコマンド編

ansible-navigator 2.0.0の機能紹介