2016-03-08 67 views
2

我想皮棉一個劇本,以檢測在許多其他的可能性以下幾條:劇本掉毛

  1. 未定義的變量
  2. 未使用的變量
  3. 看看瓦爾規定,當案件被忽視,都是相同的(衝突的瓦爾斯)

我無法弄清楚什麼是這樣做的好方法?我不想重新發明輪子,在這個意義上說:

  1. 我不想做文本處理。 Ansible這樣做是爲了完成它的任務。
  2. 掛鉤或回調,如果我沒看錯的夫婦比更高級別的,我覺得我的解決方案應該一跳。

我的目的是寫一個工具,無縫,以及可選,可與ansible。如果沒有,我不想修改安全代碼。

任何幫助或黑客或建議表示讚賞。

PS:語法檢查不會告訴我上面提到的內容。 我看了一下ansible-lint工具。它處理文本,不支持庫存(對於host_vars等)並且不使用可靠的python API。所以爲了做我所需要的,我必須調用許多內部的API,最終我會在我的工具中編寫完整的代碼。

回答

0
  1. 未定義的變量: 您需要執行劇本要明白,沒有定義的變量。 例如,我們有: 劇本:

    • 模板:SRC = foo.j2 DEST =的/ etc/file.conf所有者=倉盤組=車輪模式= 0644

FOO。 J2: {{E}}

還你magic variables:ansible_distribution_release 有時卻是無法在主機上定義沒有lsb_release安裝

你也可以在運行時設置變量-e如果你想死在未設置的變量上 你也可以通過庫存設置變量!

  • 未使用的變量 根據環境,您可以用什麼,或者你可以當禁用:

    • set_fact: vagrant_arch_ext = 「x86_64的」 時:ansible_architecture == 「x86_64的」 標籤:
      • 流浪漢
  • 此外您還有默認變量。

  • 看看VARS定義,當區分忽略,是相同的(衝突的瓦爾 下文) 不理解
  • +0

    我們可以使用幹運行爲未定義的變量,但我不不明白如何適應這種情況。我打算從一些簡單的事情開始,隨着時間的推移,像魔術變量,運行時間和其他類似的複雜情況一樣,它會更加強大。爲了實現簡單的解決方案,可以跳過與未使用的變量有關的疑慮。你有這個方法嗎?對於相互矛盾的變量,這樣的組變量的例子可以是:myvar,MYVAR; my_var,MY_VAR。希望澄清。 –

    +0

    嗨,我一直在努力我的需求一段時間了。 [這裏](https://github.com/host-anshu/lint-playbook)是源代碼。你可以看看並分享你的觀點嗎? TIA。 –

    +0

    請描述您的工具的用例?爲什麼像https://github.com/willthames/ansible-lint https://atom.io/packages/linter-ansible-linting這樣的工具不適合你的用例?並且您可能會對此感興趣的討論https://groups.google.com/forum/m/#!msg/ansible-project/AlfMYo5RzIM/LJOWhxgL6G8J –