使用ansible角色启动服务并使用默认值

时间:2019-07-03 07:03:37

标签: ansible

我正在尝试建立一个角色,以安装一些具有所需应用程序的服务器。其中一个应用是docker。

Docker-ce安装成功。现在,我试图告诉系统启动docker.service并通过重新启动启用它。

当我在“ with_items”上创建列表时,它工作正常,当我尝试使用defaults / main.yml文件中的列表时,ansible告诉我找不到服务泊坞窗。现在我想知道,也许只是一些拼写问题?

这个很好用

  - name: Start and enable needed services
    systemd:
      name: "{{ item }}"
      state: started
      enabled: yes
      daemon_reload: yes
    with_items:
      - docker

这不起作用

  - name: Start and enable needed services
    systemd:
      name: "{{ clientonline }}"
      state: started
      enabled: yes
      daemon_reload: yes
-------
# in defaults/main.yml
  clientonline:
    - docker

当我使用defaults / main.yml中的列表时,Ansible无法找到docker服务

 [WARNING]: The value ['docker'] (type list) in a string field was converted to u"['docker']" (type string). If this does not look like what you expect, quote the entire value to ensure it does not change.

此示例也不起作用:

  - name: Start and enable needed services
    systemd:
      name: "{{ item }}"
      state: started
      enabled: yes
      daemon_reload: yes
    with_items:
     - clientonline

带来此错误:

failed: [fgi_appdeploy_server] (item=clientonline) => {"ansible_loop_var": "item", "changed": false, "item": "clientonline", "msg": "Could not find the requested service clientonline: host"}

2 个答案:

答案 0 :(得分:0)

将起作用:

- name: Start and enable needed services
    systemd:
      name: "{{ item }}"
      state: started
      enabled: yes
      daemon_reload: yes
   with_item:
     - "{{ clientonline }}"

因为clientonline是您需要在其中循环浏览的列表

答案 1 :(得分:0)

好;现在对于systemd可以正常使用:

  - name: Start and enable needed services
    systemd:
      name: '{{ item }}'
      state: started
      enabled: yes
      daemon_reload: yes
    with_items:
     - '{{ clientonline }}'

但是相同的yum模块样式将在bash上带来此警告,很高兴

  - name: Install needed packages
    yum:
      name: '{{ item }}'
      state: latest
    with_items:
      - '{{ clientpackages }}'
[DEPRECATION WARNING]: Invoking "yum" only once while using a loop via squash_actions is deprecated. Instead of using a loop to supply multiple items and specifying `name: "{{ item }}"`, please use `name: ['{{ serverpackages }}']` and remove the loop. This feature will 
be removed in version 2.11. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.

很高兴知道-谢谢大家!