以下是我称为webserver
的ansibel角色的目录结构localhost roles#tree
.
├── readme.md
├── site.yml
└── webserver
├── files
│ ├── createswap.sh
│ └── nginxkeyadd.sh
├── handlers
│ └── main.yml
├── tasks
│ └── main.yml
├── templates
│ ├── helloworld.conf.j2
│ └── index.html.j2
└── vars
└── main.yml
我的tasks / main.yml看起来像
- name: Create swap file 50MB
script: /etc/ansible/roles/webserver/files/createswap.sh
- name: add GPG key for nginx
script: /etc/ansible/roles/webserver/files/nginxkeyadd.sh
- name: Install nginx on target
apt: name={{ item }} state=latest
with_items:
- rsync
- git
- nginx
在task / main.yml中指定本地脚本文件的绝对路径,如
script: /etc/ansible/roles/webserver/files/nginxkeyadd.sh
和script: /etc/ansible/roles/webserver/files/createswap.sh
。脚本没有任何ansible变量。
在ansible是好的做法吗?
答案 0 :(得分:1)
这是ansible的好习惯吗?
没有。摘录自docs:
任何副本,脚本,模板或包含任务(在角色中)都可以引用roles / x / {files,templates,tasks} /(dir取决于任务)中的文件,而不必相对或绝对地路径它们
同样使用shell脚本而不是本机Ansible模块是反模式。