首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带args的云init脚本(参数化)

带args的云init脚本(参数化)
EN

Server Fault用户
提问于 2014-10-16 05:28:54
回答 1查看 559关注 0票数 3

Long Story

我正在准备安装监控软件代理的云init脚本(免责声明:我是MonitOwl的创始人之一)。代理软件收集信息(如内存或网络统计数据)并将其发送到服务器。每个公司集团都应该连接到自己的个性化服务器网址,如:https://customer_name.example.org

云init脚本是一个从github下载代理、安装systemd服务和安装python需求的Content-Type: multipart/mixed;。目前,我们使用它的方式如下:

# ec2-run-instances --user-data-file <our_generated_file>

对于我们的内部部署,我们使用ansible (用VARS参数化),但是现在越来越多的人要求使用云init脚本。

目标

我想为所有公司提供一个通用的云-init脚本,并提供与URL到服务器的争论。我想把这个云init脚本放在我们的github存储库中,以使安装代理的体验更好。

问题

不幸的是,我发现的唯一方法是准备一个单独的脚本- 生成器,它将创建带有硬编码URL的云init脚本。有什么好办法来完成我的目标吗?我不敢相信规范在开发云init时没有考虑到参数化。

EN

回答 1

Server Fault用户

发布于 2022-08-03 18:25:12

长话短说,云-init可以使用通过元数据传递给它的jinja变量进行模板化。然后将元数据传递给云init实例,这里有一些很好的示例:https://cloudinit.readthedocs.io/en/latest/topics/instancedata.html

请注意,您需要在创建实例时启用元数据。

要测试变量,可以使用一个启用元数据的实例。

代码语言:javascript
运行
复制
[user@ubuntu-h~]$ cloud-init query -f "{{ sys_info.uname[1] }}"
ubuntu-h

"ubuntu-h“是从元数据中提取的,而不是从本地机器中提取的。

就我个人而言,我必须根据ec2实例主机名生成盐分名。可以使用特定于其应用程序或runcmd的模块。请注意模板和云配置↓的shebang。

代码语言:javascript
运行
复制
## template: jinja
#cloud-config
runcmd:
    - ["/bin/mkdir", "-p", "/data/salt/etc"]
    - ["/bin/ln", "-s", "/data/salt/etc", "/etc/salt"]
    - echo 'test.{{ sys_info.uname[1] }}.aws.local' >> /etc/salt/minion_id

### OR using the module salt-minion:

salt_minion:
    pkg_name: 'salt-minion'
    service_name: 'salt-minion'
    config_dir: '/data/salt/etc'
    conf:
        master: IP_ADDRESS
        id: test.{{ sys_info.uname[1] }}.aws.local
        root_dir: /data/salt
        pki_dir: /pki/minion
        conf_file: /data/salt/etc/minion
        log_file: /data/salt/log/minion
        log_level_logfile: info
    grains:
        role:
            - aws_staged
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/637389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档