gpt4 book ai didi

ruby - ERB:迭代一个数组并将每个值作为单行字符串的一部分输出

转载 作者:数据小太阳 更新时间:2023-10-29 08:36:06 25 4
gpt4 key购买 nike

我正在尝试通过遍历来自 puppet 数组的数组来编写 sudoers 文件。

这是我的 puppet 类。它定义了一个数组 oracle_homes

1 class oracle_home {
2 $oracle_homes = split($::oracle_homes, ',')
3 file { '/tmp/oracle_homes':
4 ensure => file,
5 content => template('oracle/oracle.sudoer.erb'),
6 }
7 }
8
9 require oracle_home

这是 erb 模板。

 1 Defaults    env_keep += "ORACLE_BASE ORACLE_HOME TNS_ADMIN"
2
3 <% @oracle_homes.each do |oracle_home| -%>
4 Cmnd_Alias SQLPLUS = <%= oracle_home -%>/bin/sqlplus
5 Cmnd_Alias SRVCTL = <%= oracle_home -%>/bin/srvctl
6 Cmnd_Alias VOTEDSK = <%= oracle_home -%>/bin/crsctl query css votedisk
7 <% end -%>
8
9 Runas_Alias DB = oracle, regdb
10 Runas_Alias GRID = oracle, grid
11
12 zabbix ALL = (GRID) NOPASSWD: VOTEDSK
13 zabbix ALL = (DB) NOPASSWD: SQLPLUS
14 zabbix ALL = (GRID) NOPASSWD: SRVCTL
15
16 Defaults:zabbix !authenticate
17 Defaults:zabbix !syslog

从第 3 行到第 6 行,我试图生成 Cmnd_Alias 但输出不是我需要的。

我明白了

 1  Defaults    env_keep += "ORACLE_BASE ORACLE_HOME TNS_ADMIN"
2
3 Cmnd_Alias SQLPLUS = '/opt/oracle/regdb/product/12.1.0.2/dbhome_1'/bin/sqlplus
4 Cmnd_Alias SRVCTL = '/opt/oracle/regdb/product/12.1.0.2/dbhome_1'/bin/srvctl
5 Cmnd_Alias VOTEDSK = '/opt/oracle/regdb/product/12.1.0.2/dbhome_1'/bin/crsctl query css votedisk
6 Cmnd_Alias SQLPLUS = '/opt/oracle/regdb/product/11.2.0.4/dbhome_1'/bin/sqlplus
7 Cmnd_Alias SRVCTL = '/opt/oracle/regdb/product/11.2.0.4/dbhome_1'/bin/srvctl
8 Cmnd_Alias VOTEDSK = '/opt/oracle/regdb/product/11.2.0.4/dbhome_1'/bin/crsctl query css votedisk
9
10 Runas_Alias DB = oracle, regdb
11 Runas_Alias GRID = oracle, grid
12
13 zabbix ALL = (GRID) NOPASSWD: VOTEDSK
14 zabbix ALL = (DB) NOPASSWD: SQLPLUS
15 zabbix ALL = (GRID) NOPASSWD: SRVCTL
16
17 Defaults:zabbix !authenticate
18 Defaults:zabbix !syslog

如何更改迭代语法以生成类似 Cmnd_Alias 的行

Cmnd_Alias SQLPLUS = /opt/oracle/regdb/product/12.1.0.2/dbhome_1/bin/sqlplus, /opt/oracle/regdb/product/11.2.0.4/dbhome_1/bin/sqlplus
Cmnd_Alias VOTEDSK = /opt/oracle/regdb/product/12.1.0.2/dbhome_1/bin/crsctl query css votedisk, /opt/oracle/regdb/product/11.2.0.4/dbhome_1/bin/crsctl query css votedisk

最佳答案

我会尝试替换

3 <% @oracle_homes.each do |oracle_home| -%>
4 Cmnd_Alias SQLPLUS = <%= oracle_home -%>/bin/sqlplus
5 Cmnd_Alias SRVCTL = <%= oracle_home -%>/bin/srvctl
6 Cmnd_Alias VOTEDSK = <%= oracle_home -%>/bin/crsctl query css votedisk
7 <% end -%>

Cmnd_Alias SQLPLUS = <%= @oracle_homes.map { |path| "#{path}/bin/sqlplus" }.join(', ') %>
Cmnd_Alias SRVCTL = <%= @oracle_homes.map { |path| "#{path}/bin/srvctl" }.join(', ') %>
Cmnd_Alias VOTEDSK = <%= @oracle_homes.map { |path| "#{path}/bin/crsctl query css votedisk" }.join(', ') %>

关于ruby - ERB:迭代一个数组并将每个值作为单行字符串的一部分输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39611636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com