问题描述
我将使用ansible剧本在Openstack中运行服务器。
〜/ ansible / roles / launch_instance / tasks / main.yml
---
- name: launch instance
os_server:
name: "{{ prefix }}-{{ item.name }}"
state: present
key_name: "{{ item.key }}"
nics: "{{ item.nics }}"
image: "{{ item.image }}"
flavor: "{{ item.flavor }}"
timeout: 400
meta: "{{ item.meta }}"
userdata: "{{ item.userdata }}"
with_items: "{{ servers }}"
register: "os_hosts"
- debug: var=os_hosts
〜/ ansible / roles / launch_instance / tasks / main.yml
---
prefix: icr
servers:
- name: server-one
image: ubuntu18_cloud
flavor: c1m512d5
key: my-cloud-key-pub
nics: "port-id=70f5cba4-8d5e-4c36-9482-64645458ff7b"
userdata: |
#!/bin/bash -ex
curl -o controller.cfg http://192.168.1.240/controller.cfg
meta:
group: ubuntu_servers
启动服务器后,我通过ssh(ssh [email protected])连接,希望看到从Web服务器下载的文件。但是主目录为空。 在本地,命令curl -o controller.cfg http://192.168.1.240/controller.cfg正常工作。
调试:
ok: [localhost] => {
"os_hosts": {
"changed": true,"msg": "All items completed","results": [
{
...
"userdata": "#!/bin/bash -ex\ncurl -o controller.cfg http://192.168.1.240/controller.cfg\n",...
}
...
}
我也尝试过:
userdata: |
{%- raw -%}#!/bin/bash -ex
curl -o controller.cfg http://192.168.1.240/controller.cfg{% endraw -%}
您能告诉我们ansible启动服务器后如何执行shell命令吗?
PS: 也没有给出积极的结果。
userdata: |
#cloud-config
runcmd:
- touch /test.txt
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)