ansible - 在角色中包含静态脚本文件

时间:2017-02-08 19:56:29

标签: ansible ansible-2.x

以下是我称为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.shscript: /etc/ansible/roles/webserver/files/createswap.sh。脚本没有任何ansible变量。 在ansible是好的做法吗?

1 个答案:

答案 0 :(得分:1)

  

这是ansible的好习惯吗?

没有。摘录自docs

  

任何副本,脚本,模板或包含任务(在角色中)都可以引用roles / x / {files,templates,tasks} /(dir取决于任务)中的文件,而不必相对或绝对地路径它们

同样使用shell脚本而不是本机Ansible模块是反模式。