내 ansible 파일을 사용하여 원격 호스트에 패키지를 설치 해야 합니다 . 파일이 있는 디렉터리 에서 이름으로 변수를 가져오려고 host_vars
합니다 . 이는 원격 컴퓨터의 호스트 이름입니다....package
host_vars
ansi2
---
- hosts: all
become: yes
ignore_errors: yes
gather_facts: no
tasks:
- name: install vim
yum: name={{ package }} state=present
디렉토리 구조:
[root@ansi1 ansible]# pwd
/etc/ansible
[root@ansi1 ansible]#
[root@ansi1 ansible]# ls -l ansi2/host_vars/
total 4
-rw-r--r-- 1 root root 19 Jun 13 08:15 ansi2
[root@ansi1 ansible]#
[root@ansi1 ansible]# cat ansi2/host_vars/ansi2
---
package: "vim"
실수:
TASK [install vim] *************************************************************
task path: /etc/ansible/service.yml:7
fatal: [ansi2.example.com]: FAILED! => {
"failed": true,
"msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'package' is undefined\n\nThe error appears to have been in '/etc/ansible/service.yml': line 7, column 6, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n tasks:\n - name: install vim\n ^ here\n"
}
...ignoring
답변1
귀하의 경우, 디렉토리의 최상위 레벨에는 다음과 같은 파일과 디렉토리가 포함되어야 한다고 가정합니다.
/etc
+-- ansible/
+-- host_vars/
+-- ansi2.example.com.yml
+-- service.yml
답변2
귀하의 인벤토리에 어떤 문제가 있을 수 있으며 그 안에 무엇이 있습니까?
.yml 파일의 이름은 호스트 파일의 이름과 동일해야 합니다.
/etc/ansible/ansi2/host
[webdb]
127.0.0.1 ansible_user=root
/etc/ansible/ansi2/host_vars/webdb.yml
---
some_var: "temp"
/etc/ansible/service.yml
---
- hosts: all
become: yes
ignore_errors: yes
gather_facts: no
tasks:
- name: install vim
yum: name={{ package }} state=present