小编Zul*_*kis的帖子

重复使用 LetsEncrypt DNS 质询

使用 LetsEncrypt 时,必须每 90 天更新一次证书。每次续订证书时,都必须再次证明证书中包含的域的所有权。

可以通过添加_acme-challengeDNS 记录来做到这一点。是否可以在第一次用于验证时设置此 DNS 记录,并在后续验证中重复使用它,这样就不必在每次需要更新证书时设置新的 DNS 记录?

lets-encrypt

5
推荐指数
1
解决办法
2642
查看次数

Apache - 允许在未经身份验证的情况下访问全局别名目录

我有一个虚拟主机,它配置了一些访问限制,如下所示:

<Location "/">
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /var/www/domain/htdocs/.htpasswd
    Require valid-user
</Location>
Run Code Online (Sandbox Code Playgroud)

除此之外,我还有以下conf文件:

Alias /.well-known/acme-challenge/ "/var/www/letsencrypt/"

<Location /.well-known/acme-challenge/>
    # Security Options
    Options None
    AllowOverride None
    ForceType text/plain
    RedirectMatch 404 "^(?!/\.well-known/acme-challenge/[\w-]{43}$)"

    # Do not redirect to https or perform other rewrites
    RewriteEngine off

</Location>
Run Code Online (Sandbox Code Playgroud)

我需要/.well-known/acme-challenge/无需授权即可访问。

我已经尝试Require all granted向我的conf文件添加不同的变体,但无济于事。

如何让/.well-known/acme-challenge/所有虚拟主机无需身份验证即可访问?(我不想修改任何虚拟主机,这个虚拟主机只是一个例子)。

apache-2.4 apache2

5
推荐指数
1
解决办法
9887
查看次数

ansible 命令 with_items

在 ansible 1.5.4 中,以下命令完美运行:

- name: Generate postfix dhparams
  command: "{{ item }}"
  with_items:
    - openssl gendh -out /etc/postfix/dh_512.pem -2 512 creates=/etc/postfix/dh_512.pem
    - openssl gendh -out /etc/postfix/dh_2048.pem -2 2048 creates=/etc/postfix/dh_2048.pem
  notify: Reload postfix
Run Code Online (Sandbox Code Playgroud)

升级到 1.9.1 后,命令失败并显示fatal: [127.0.0.1] => A variable inserted a new parameter into the module args. Be sure to quote variables if they contain equal signs (for example: "{{var}}").错误。

正如{{ item }}已经引用的那样,我不知道出了什么问题。

我怎样才能让这个命令再次工作?

postfix deployment ansible

4
推荐指数
1
解决办法
4538
查看次数

vmware esxi - vmkfstools 在尝试复制瘦 vmdk 时返回错误

当尝试使用 vmkfstools 在 esxi 5 上复制瘦 vmdk 时,如下所示:

vmkfstools -i IPFire-flat.vmdk -d thin IPFire-Template-flat.vmdk
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

DiskLib_Check() 对源磁盘失败。指定的文件不是虚拟磁盘 (15)。

我可以完美地在我的 vm 中使用 vmdk,所以我不完全确定出了什么问题。

我该如何解决?

vmware-esxi

3
推荐指数
1
解决办法
2万
查看次数

ansible/jinja2 拒绝具有特定属性的字典列表中的所有项目

我有一个这样的字典列表:

list_of_dicts:
  - name: Item1
  - name: Item2
    type: special
  - name: Item3
  - name: Item4
    type: small
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,并非所有项目都有属性type。上下文:如果没有type设置属性,则表示该项目是默认类型。

我想选择所有不属于类型的项目special

我试过这个:list_of_dicts | rejectattr('type', 'equalto', 'special')

不幸的是,这会失败并出现AnsibleUndefinedVariable: 'dict object' has no attribute 'type'错误,因为某些项目没有类型。

有什么好的方法可以解决这个问题呢?

ansible jinja2

3
推荐指数
1
解决办法
1万
查看次数

ansible - 从清单中获取所有主机名和相应 ansible_host 值的列表

我的库存如下所示:

db0 ansible_host=10.0.0.1
db1 ansible_host=10.0.0.2
app0 ansible_host=10.0.0.3
app1 ansible_host=10.0.0.4
...
Run Code Online (Sandbox Code Playgroud)

由此,我需要提取这样的列表:

- name: db0
  ip: 10.0.0.1
- name: db1
  ip: 10.0.0.2
- name: app0
  ip: 10.0.0.3
- name: app1
  ip: 10.0.0.4
Run Code Online (Sandbox Code Playgroud)

我知道我可以让所有主机使用groups['all'].

我还可以ansible_host使用 获取每个主机的值hostvars['<hostname>']['ansible_host']

我如何结合它来创建我需要的列表?

ansible

3
推荐指数
1
解决办法
7691
查看次数

postfix - 如何防止用户使用其他用户名发送

即使我的postfix服务器没有认证就无法使用(开放中继),登录后仍然可以像这样以另一个用户名发送邮件:

EHLO domain.org
auth plain eW91IGxpdHRsZSBkaXJ0eSBiYXN0YXJkIDstKQ==
235 2.7.0 Authentication successful
mail from: otheruser@domain.org
250 2.1.0 Ok
rcpt to: recipient@otherdomain.org
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Please send me your account info.
.
250 2.0.0 Ok: queued as D40692A61AA
quit
Run Code Online (Sandbox Code Playgroud)

如何防止这种情况发生?

postfix

1
推荐指数
1
解决办法
279
查看次数

ESXi 5.1 崩溃

我有一个 ESXi 5.1 安装,它不规则地崩溃,错误输出如下:

服务器有以下硬件:

Supermicro X8DTN+ Mainboard
2 x Intel XEON E5606
6 x 2GB ECC DDR3-RAM
LSI 9260-6i Raid5
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

virtualization vmware-esxi vmware-vsphere

1
推荐指数
1
解决办法
646
查看次数

ansible 用变量替换正则表达式

我正在尝试替换localhost字符串

$amp_conf['AMPDBHOST'] = 'localhost';

与变量的内容{{ asterisk_db_host }},即172.17.0.3

虽然

- replace:
    dest: /usr/src/freepbx/installlib/installcommand.class.php
    regexp: '(\$amp_conf\[.AMPDBHOST.\] = .)localhost(.;)'
    replace: '\1\2'
Run Code Online (Sandbox Code Playgroud)

完美的结果

$amp_conf['AMPDBHOST'] = 'localhost';

- replace:
    dest: /usr/src/freepbx/installlib/installcommand.class.php
    regexp: '(\$amp_conf\[.AMPDBHOST.\] = .)localhost(.;)'
    replace: '\1{{ asterisk_db_host }}\2'
Run Code Online (Sandbox Code Playgroud)

- replace:
    dest: /usr/src/freepbx/installlib/installcommand.class.php
    regexp: '(\$amp_conf\[.AMPDBHOST.\] = .)localhost(.;)'
    replace: '\1{{ asterisk_db_host|regex_escape() }}\2'
Run Code Online (Sandbox Code Playgroud)

O2.17.0.2';或替换字符串O2\.17\.0\.2';

我在这里做错了什么?我该如何正确进行此替换?

ansible

1
推荐指数
1
解决办法
3万
查看次数