ansible - 使用 ansible 角色和默认值启动服务
问题描述
我正在尝试在 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"}
解决方案
那可行:
- name: Start and enable needed services
systemd:
name: "{{ item }}"
state: started
enabled: yes
daemon_reload: yes
with_item:
- "{{ clientonline }}"
因为clientonline
是一个列表,您需要遍历它
推荐阅读
- python - 如何为 http 请求连接库?
- ansible - How to uncomment multiple lines in a file using Ansible playbook
- java - 如何使用java解决查询firebase中的非法字符
- r - 按列分组,保持最小值,并列连接选定值
- python - 跟进问题:pick_event to get a point using matplotlib
- python - Dynamic selection of number of clusters in clustering
- openssl - Using OpenSSL from Ports - FreeBSD
- c++ - Storing Groups of Strings in Vectors
- azure-powershell - Get-AzureRmDataLakeStoreChildItem 访问问题
- php - How to select only available time and date for doctor appointment booking system in PHP