如何/在哪里可以找到用于 SharePoint 网站或页面的模板。
我有一个想要模仿的页面,但我不知道在哪里可以找到该页面和站点的模板?
我想做的是为每个 openvpn 用户生成多个配置文件。我在支柱中有 IP 地址和其他配置。
例如:
openvpn:
- user1:
ip: 1.2.3.4
config:
- line1
- line2
Run Code Online (Sandbox Code Playgroud)
在 SLS 中,我想做一些类似的事情:
{% for vpnuser in salt['pillar.get']('openvpn') %}
/etc/openvpn/ccd/{{ vpnuser }}:
file.managed:
- template: jinja
- source: salt://openvpn/ccdtemplate
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
在 ccdtemplate 中,我想根据用户和存储在柱子中的该用户的配置数据生成配置。
但是因此我需要从状态中知道变量“vpnuser”的内容。
是否可以将变量从状态传递到 jinja 模板?
我们有多个 CloudFormation 脚本来创建我们的堆栈。
现在,我们要编写(自动化)新脚本,这些脚本仅用于更新1 个特定资源(业务需求)。
我遇到的问题是如何在我的更新脚本中引用现有资源?我知道有REF函数,但我相信这只是用于在同一脚本中引用资源。AWS 是否提供了一些东西来引用现有资源?
我已经读到我们可以使用,parameters但还有其他选择吗?
我尝试使用一个模板创建两个不同的文件,因为它们仅相差一行。
file
{
"/tmp/bootstrap-raid.sh":
content => template("pxe/bootstrap.sh.erb"),
}
file
{
"/tmp/bootstrap-noraid.sh":
content => template("pxe/bootstrap.sh.erb"),
}
Run Code Online (Sandbox Code Playgroud)
bootstrap.sh.erb:
<% if ??? == "???" %>
-r yes \
<% else %>
-r no \
<% end %>
Run Code Online (Sandbox Code Playgroud)
我不能通过像 那样定义两次来传递变量$raid=yes file{} $raid=no file{},所以我试图file{}毫不费力地在每个变量中定义变量。然后我考虑在模板中使用目标文件名,<% if filename == "/tmp/bootstrap-raid.sh" %>这也是不可能的。
如何使用不同的“参数”两次调用模板
我的目标是不在清单文件中定义和调用额外的函数,或者制作两个模板。有任何想法吗?
模板中是否有任何预定义的默认变量,例如目标文件的文件名、模板名……?
编辑:另一个例子是在 debian 中有两个 php.ini 文件,一个用于命令行,一个用于网络服务器。我只想交换内存限制。但是每个服务器都需要两个 php.ini 文件。我正在寻找一种将硬编码参数传递给模板文件的方法,或者一种我可以if/then/else基于目标文件名的方法。当然,我知道我能够创建一个新的定义,我可以调用两次。但我正在寻找一种更简单的方法。
尽管 Ansible 本身有触发自定义错误的方法,但我找不到类似 Jinja 的任何内容。
我当前的方法使用语法错误:
{% if 'ansible_mounts' in hostvars[host] %}
# {{ host }} knows its mount-points
{% else %}
# {% error!! No ansible_mounts listed for host - fact-gathering must've failed %}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
但是那些在运行时渲染得很差——需要查看模板文件内部并搜索错误(渲染甚至不包括行号!)。
有没有办法从 Jinja 模板内部输出整洁的失败消息?
我们想为 AWS 中相当标准的堆栈创建一个模板。我们需要三层。
层:弹性负载均衡器
层:根据站点需求触发的警报创建/销毁多个Web服务器
层:数据库服务器
第 2 层上的实例应该知道数据库实例的主机名。理想情况下,我想获取数据库实例的私有 IP 并将其通过用户数据传递到 Web 服务器。
Fn::GetAtt不支持私有ip(只支持public)
我想另一种方法是构建堆栈,然后手动设置数据库私有 ip。虽然它确实使我们的设置不那么干净。理想情况下,我们希望在模板中描述所有内容。(即使这涉及通过user-data运行脚本)
有什么建议?
amazon-ec2 template amazon-web-services amazon-cloudformation
我有一个文件,我想将其重复用于几个不同的目的。该文件在不同用途中 90% 相同,只是略有不同。我不想在 puppet 中的多个文件中复制内容,所以有没有办法做类似的事情
file { "/tmp/file1" :
content => template("module/template.erb")
}
file { "/tmp/file2" :
content => template("module/template.erb")
}
Run Code Online (Sandbox Code Playgroud)
在模板中:
Jack
John
James
<% if file == "/tmp/file2" %>
Jim
<% end %>
Run Code Online (Sandbox Code Playgroud) 以下代码因语法错误而被拒绝:
{%
if inventory_hostname in groups.aptcache
set cachehost = 'localhost'
else
set cachehost = groups['aptcache'] | first
endif
%}
cache={{ cachehost }}
Run Code Online (Sandbox Code Playgroud)
我希望,我的意图足够清楚,以便 Jinja2 大师纠正我......拜托?
如何使用 Puppet 中的 ERB 模板文件调整 ~/.ssh/config 文件中的“用户”行,使其包含与帐户名称匹配的正确用户名?
class accounts_global::tharold {
account { 'tharold':
ensure => present,
}
file { "/home/tharold/.ssh/config" :
require => Account['tharold'],
owner => 'tharold',
group => 'tharold',
mode => '0600',
content => template('accounts_global/user_ssh_config.erb'),
}
}
Run Code Online (Sandbox Code Playgroud)
user_ssh_config.erb 文件的内容如下所示:
Host ssh.example.com
Port 22
User tharold
IdentityFile ~/.ssh/ssh-key
Run Code Online (Sandbox Code Playgroud)
问题是,用用户的帐户名替换模板文件中的“User tharold”应该是什么样子的?这个 ERB 配置文件将被多个用户使用,所以我需要参数化文件的那部分。
尝试使用 <%= @name %> 最终将“accounts_global::tharold”放入文件中。
template ×9
puppet ×3
ansible ×2
jinja ×2
amazon-ec2 ×1
resources ×1
saltstack ×1
sharepoint ×1