您如何更改目录和 运行 ansible 中的命令?
Ho do you change directory and run a command in ansible?
嗨,我很难理解为什么这段代码说目录不存在
在我看到的系统上
root@Production:~# ls -l /home/azureuser/directory-with-stuff/
并且可以看到路径存在
但是,在我的 ansible 代码中,统计信息告诉我该目录不存在
代码如下
Project_add\roles\common\tasks
main.yml
Developer_project_setup.yml
vars
main.yml
在 Developer_project_setup.yml 中 运行 通过包含在 main.yml
中
- name: Running make libs to build libraries
command: make libs
args:
chdir: "{ file_path_home }"
when: infra_problem_dir_check.stat.exists
- name: Running make clean for static tarballls
command: make clean all
args:
chdir: "{ file_path_home }"
when: infra_problem_dir_check.stat.exists
在 vars.yml 文件中
file_path_home: /home/azureuser/directory-with-stuff
我还包含了一个要检查的统计数据,但令我惊讶的是,这也是 returns 错误的
- stat:
path: "{ file_path_home }"
register: infra_problem_dir_check
我还使用以下方法尝试调试,结果很有趣,因为我可以看到文件夹
- name: checking working directory
command: pwd
register: test
- debug: msg={{ test.stdout }}
- name: checking working directory contents
command: ls -l
register: test
- debug: msg={{ test.stdout }}
所以当我 运行 我得到剧本时
TASK [Project_add/roles/common : stat] **************************************************************************************************************************************************************************************************************************************************************************************
ok: [client_Host_9d63] => {"changed": false, "stat": {"exists": false}}
TASK [Project_add/roles/common : checking working directory contents] *******************************************************************************************************************************************************************************************************************************************************
changed: [client_Host_9d63] => {"changed": true, "cmd": ["ls", "-l"], "delta": "0:00:00.003163", "end": "2020-03-11 23:00:50.782252", "rc": 0, "start": "2020-03-11 23:00:50.779089", "stderr": "", "stderr_lines": [], "stdout": "total 4\ndrwxr-xr-x 7 azureuser azureuser 4096 Mar 9 20:14 directory-with-stuff", "stdout_lines": ["total 4", "drwxr-xr-x 7 azureuser azureuser 4096 Mar 9 20:14 directory-with-stuff"]}
TASK [Project_add/roles/common : debug] *************************************************************************************************************************************************************************************************************************************************************************************
ok: [client_Host_9d63] => {
"msg": "total 4\ndrwxr-xr-x 7 azureuser azureuser 4096 Mar 9 20:14 directory-with-stuff"
}
TASK [Project_add/roles/common : Running make libs to build libraries] ******************************************************************************************************************************************************************************************************************************************************
skipping: [client_Host_9d63] => {"changed": false, "skip_reason": "Conditional result was False"}
TASK [Project_add/roles/common : Running make clean for static tarballls] ***************************************************************************************************************************************************************************************************************************************************
skipping: [client_Host_9d63] => {"changed": false, "skip_reason": "Conditional result was False"}
不知道为什么它说文件夹不存在,谁能指出我做错了什么?
我认为它的语法问题。使用 double 而不是 single.i.e '{{' 而不是 '{"
args:
chdir: "{{ file_path_home }}"
- stat:
path: "{{ file_path_home }}"
register: infra_problem_dir_check
嗨,我很难理解为什么这段代码说目录不存在
在我看到的系统上
root@Production:~# ls -l /home/azureuser/directory-with-stuff/
并且可以看到路径存在
但是,在我的 ansible 代码中,统计信息告诉我该目录不存在 代码如下
Project_add\roles\common\tasks
main.yml
Developer_project_setup.yml
vars
main.yml
在 Developer_project_setup.yml 中 运行 通过包含在 main.yml
中- name: Running make libs to build libraries
command: make libs
args:
chdir: "{ file_path_home }"
when: infra_problem_dir_check.stat.exists
- name: Running make clean for static tarballls
command: make clean all
args:
chdir: "{ file_path_home }"
when: infra_problem_dir_check.stat.exists
在 vars.yml 文件中
file_path_home: /home/azureuser/directory-with-stuff
我还包含了一个要检查的统计数据,但令我惊讶的是,这也是 returns 错误的
- stat:
path: "{ file_path_home }"
register: infra_problem_dir_check
我还使用以下方法尝试调试,结果很有趣,因为我可以看到文件夹
- name: checking working directory
command: pwd
register: test
- debug: msg={{ test.stdout }}
- name: checking working directory contents
command: ls -l
register: test
- debug: msg={{ test.stdout }}
所以当我 运行 我得到剧本时
TASK [Project_add/roles/common : stat] **************************************************************************************************************************************************************************************************************************************************************************************
ok: [client_Host_9d63] => {"changed": false, "stat": {"exists": false}}
TASK [Project_add/roles/common : checking working directory contents] *******************************************************************************************************************************************************************************************************************************************************
changed: [client_Host_9d63] => {"changed": true, "cmd": ["ls", "-l"], "delta": "0:00:00.003163", "end": "2020-03-11 23:00:50.782252", "rc": 0, "start": "2020-03-11 23:00:50.779089", "stderr": "", "stderr_lines": [], "stdout": "total 4\ndrwxr-xr-x 7 azureuser azureuser 4096 Mar 9 20:14 directory-with-stuff", "stdout_lines": ["total 4", "drwxr-xr-x 7 azureuser azureuser 4096 Mar 9 20:14 directory-with-stuff"]}
TASK [Project_add/roles/common : debug] *************************************************************************************************************************************************************************************************************************************************************************************
ok: [client_Host_9d63] => {
"msg": "total 4\ndrwxr-xr-x 7 azureuser azureuser 4096 Mar 9 20:14 directory-with-stuff"
}
TASK [Project_add/roles/common : Running make libs to build libraries] ******************************************************************************************************************************************************************************************************************************************************
skipping: [client_Host_9d63] => {"changed": false, "skip_reason": "Conditional result was False"}
TASK [Project_add/roles/common : Running make clean for static tarballls] ***************************************************************************************************************************************************************************************************************************************************
skipping: [client_Host_9d63] => {"changed": false, "skip_reason": "Conditional result was False"}
不知道为什么它说文件夹不存在,谁能指出我做错了什么?
我认为它的语法问题。使用 double 而不是 single.i.e '{{' 而不是 '{"
args:
chdir: "{{ file_path_home }}"
- stat:
path: "{{ file_path_home }}"
register: infra_problem_dir_check