我有一个项目使用playbook执行shell命令,如下所示:
/tmp/fileforinst.bin -varfile response.varfile
当我执行shell命令时,我为安装目的提供response.varfile
,其中包括一些条目,如目标安装目录、应用程序端口等。response.varfile
格式如下:
app.Home=/app/home
httpPort=8080
目前我得到以下错误
"在Ansible控制器"上找不到或无法访问"runner/project/response.varfile";
我得到错误的原因很清楚。所需的response.varfile
文件存在于与yml文件(剧本(相同分支的GIT服务器中
知道在执行shell命令时如何提供response.varfile
文件吗?
谢谢
所需的
response.varfile
文件存在于Git服务器中,与YML文件(剧本(位于同一分支上
假设你的角色在Git存储库中有一个类似的结构
tree APP/
├── files
├── main.yml
├── README.md
├── tasks
│ └── install_app.yml
└── templates
└── response.file.j2
将项目从Git导入到您的Ansible AWX/Tower中,然后,该文件仅通过templates
或files
路径可用。
- name: Download installer from binary repository
get_url:
url: "https://{{ REPOSITORY_URL }}/Packages/{{ INSTALLER_FILE }}"
url_username: "{{ API_USER }}"
url_password: "{{ API_KEY }}"
dest: "/opt/app"
owner: "{{ APP_USER }}"
group: "{{ APP_GROUP }}"
mode: 0750
- name: Copy response file for unattended installation
template:
src: "response.file.j2"
dest: "/opt/app/response.file"
owner: "{{ APP_USER }}"
group: "{{ APP_GROUP }}"
mode: 0750
- name: Install App
shell:
cmd: "/opt/app/{{ INSTALLER_FILE }} -q -varfile /opt/app/response.file"
register: install_result
- name: Show install result
debug:
msg: "{{ install_result.stdout_lines }}"
这几乎是我在生产环境中用来安装和更新";应用程序";。换句话说,您必须将文件从Ansible控制节点复制到将要进行安装的远程节点。
进一步阅读
- 将文件模板输出到目标主机
- 目录布局