快轉到主要內容

Jinja2 Dryrun

·1 分鐘
Ben Lai
作者
Ben Lai
畢業後,進入 devops 領域。目前擔任 SRE 工程師,專注於系統可靠性和自動化。喜歡探索新技術,並致力於提升系統性能和穩定性。
目錄

簡介
#

調整 templates jinja2 模板,使用 dryrun 方式,先在本地端渲染模板,確認語法有無錯誤。

專案結構,參考樹狀圖。

.
├── README.md
├── ansible.cfg
├── nginx_deploy.yaml
├── inventory
│   ├── dev
│   │   ├── group_vars
│   │   │   └── all.yaml
│   │   └── hosts.ini
│   ├── prd
│   │   ├── group_vars
│   │   │   └── all.yaml
│   │   └── hosts.ini
│   └── qa
│       ├── group_vars
│       │   └── all.yaml
│       └── hosts.ini
├── roles
    └── nginx_deploy
        ├── tasks
        │   └── main.yaml
        └── templates
            ├── conf.d
            │   └── api.conf.j2
            └── docker-compose.yaml.j2

執行 dryrun 渲染模板,使用 --check--diff 參數,確認模板渲染結果。

ansible-playbook -i inventory/prd/hosts.ini nginx_deploy.yaml --connection=local --check --diff -e "ansible_user=${USER}"

遇到的問題
#

dry-run 渲染模板時,ansible.cfg 設定 stdout_callback = skippy,導致出現錯誤訊息。

[ERROR]: Could not load 'skippy' callback plugin.

解決方式
#

將 ansible.cfg 設定 stdout_callback = default,或者執行時使用環境變數來覆蓋這個設定。例如:

ANSIBLE_STDOUT_CALLBACK=default ansible-playbook nginx_deploy.yaml -i inventory/dev

相關文章