2016-11-08 261 views
0

我在Ubuntu中遇到Ansible 2.2的問題。Ansible包含每個主機的變量

我的劇本包含以下內容:

--- 
- hosts: all 
    become: yes 
    roles: 
    - mysql 

我用從這裏https://galaxy.ansible.com/geerlingguy/ MySQL的作用,但改名所有MySQL本地。在劇本的默認文件夾是包含參數文件:

mysql_datadir: /var/lib/mysql 

就這樣,Ansible工作正常。但現在我想每個主機的具體配置如下解釋:http://docs.ansible.com/ansible/playbooks_best_practices.html

所以我創建的文件inventories/host_vars/test.yml,去掉了一個在任務的默認文件夾,並更新了劇本以下幾點:

--- 
- hosts: all 
    become: yes 
    roles: 
    - mysql 
    tasks: 
    - name: include vars 
    include_vars: inventories/host_vars/test.yml 

現在Ansible不會接受這個;它表示變量未設置:

致命:[]:失敗! => {「failed」:true,「msg」:「該字段'args'有一個無效值,其中包含一個未定義的變量,錯誤是:'mysql_datadir'未定義\ n \ n錯誤似乎是已經在'/home/michael/Ansible/Playbooks/roles/mysql/tasks/setup-Debian.yml':第24行,第3列,但可能\ n在文件的其他地方取決於確切的語法問題。\ n \ n此問題的行似乎是:\ n \ n \ N-名稱:刪除後apt軟件包創建InnoDB日誌文件的初始安裝\ n ^這裏\ n「}

傳遞通過命令行參數不工作問題。我該如何解決這個問題?

+0

角色在任務之前執行。但是如前所述,如果使用正確,host_vars將自動工作。 – dgw

回答

2

我相信你有多個問題。我建議從標準,簡單的目錄結構開始。

我會盡量做到以下幾點:

  • 使用標準的目錄結構,所以移動host_vars頂端文件夾
  • 裏面的host_vars目錄,把一個文件爲每臺主機,後正好命名在你的清單中定義的主機名,用「---」開始文件並在其中放置變量。不要將.yml擴展名添加到文件中!
  • 不要明確「包含」任何東西。它是自動的。在site.yml中沒有「任務」。
+0

我做了一些研究和工作,經過一些嘗試和錯誤,我注意到,host_vars和group_vars文件夾在一個目錄中深入,移動它們,現在它正在工作 –