在Ansible中,是否有方法阻止多值TXT记录始终标记为已更改?
所以我有一个负责任的任务:在Ansible中,是否有方法阻止多值TXT记录始终标记为已更改?,ansible,amazon-route53,Ansible,Amazon Route53,所以我有一个负责任的任务: - name: google._domainkey.ludoistic.com. - TXT route53: overwrite: true command: "create" zone: "ludoistic.com" record: "google._domainkey.ludoistic.com." type: "TXT" ttl: "300" value: '"v=DKI
- name: google._domainkey.ludoistic.com. - TXT
route53:
overwrite: true
command: "create"
zone: "ludoistic.com"
record: "google._domainkey.ludoistic.com."
type: "TXT"
ttl: "300"
value: '"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAup2hbfv7PQuI+z8j634065jEtT",
"eW4km3D7Vnt+tVQt+76mBp18mAb5C+xl70KS6LUEtYmrBe3fo6QbElQ96BZ4KnNJTo62NBfEkO2i/AuIO91ksKaL01En5wrH",
"B6oo9JYhJ231eDZ01af6eBkrI9dy5wYSlU1wYwpIvk/DDA9HvmTMMGv87VOQYiEfEDfdWJq8ZRxUj+sKCDQAono7dmC/vHFG",
"GkQ7/pFa+EqO4e2MFn22SmnXhLW1aGShJ3PSGvplyxZ3JHQiUO6bBi4ZoUtUZc1MOLRZjKMch/cXbkB+f/XUVNH9r0uOaZHt",
"LXH+zwikjUVFStCdgtzyqOF2tVSwIDAQAB"'
aws_access_key: '{{istic_aws_key}}'
aws_secret_key: '{{istic_aws_secret}}'
tags:
- ludoistic
但是当这个任务被执行时,它总是一个变化。有没有办法重新格式化它,使ansible在没有更改的情况下不会认为它已更改?我假设这是因为您已将overwrite设置为true。这可能每次都会执行,因此总是会给您一个改变的结果 解决此问题的一种可能方法是仅在记录不存在时执行,或者在记录不存在时使用changed_。可用于查找记录
- name: grab zone id
route53_zone:
zone: "ludoistic.com"
register: AWSINFO
- name: grab Route53 record information
route53_info:
type: TXT
query: record_sets
hosted_zone_id: "{{ AWSINFO.zone_id }}"
start_record_name: "google._domainkey.ludoistic.com."
register: RECORDS
- name: add Route 53 record if it does not exist
route53:
overwrite: false
# ...
when: RECORDS.value != other_value_goes_here
我假设这是因为您已将覆盖设置为true。这可能每次都会执行,因此总是会给您一个改变的结果 解决此问题的一种可能方法是仅在记录不存在时执行,或者在记录不存在时使用changed_。可用于查找记录
- name: grab zone id
route53_zone:
zone: "ludoistic.com"
register: AWSINFO
- name: grab Route53 record information
route53_info:
type: TXT
query: record_sets
hosted_zone_id: "{{ AWSINFO.zone_id }}"
start_record_name: "google._domainkey.ludoistic.com."
register: RECORDS
- name: add Route 53 record if it does not exist
route53:
overwrite: false
# ...
when: RECORDS.value != other_value_goes_here
在您的情况下,请注意您的DKIM记录是完全错误的 查看DNS记录的结果,同时使用实际剧本进行设置:
dig google._domainkey.ludoistic.com TXT
这将为您创建一个唯一的DKIM TXT记录,并最终解决您的更改状态问题,因为现在,您将拥有一个唯一的TXT,并且route53模块将正常工作
一般来说,从我所理解的读和模块两个方面来看,这似乎是发生的,因为您在多个分离的任务中设置TXT记录,当模块将考虑和比较时。
所以我知道你现在正在做的是:
-名称:foo.example.org文本
路线53:
覆盖:真
命令:创建
专区:example.org
记录:foo.example.org。
类型:TXT
ttl:300
值:“bar”
aws_访问密钥:{{istic_aws_密钥}}
aws_secret_密钥:{{istic_aws_secret}}
-名称:foo.example.org文本
路线53:
覆盖:真
命令:创建
专区:example.org
记录:foo.example.org。
类型:TXT
ttl:300
值:“bar”
aws_访问密钥:{{istic_aws_密钥}}
aws_secret_密钥:{{istic_aws_secret}}
这将永远是一个变化,因为foo.ludoistic.com的整个TXT记录。永远不会只匹配其中的一部分
相反,您应该做的是,让模块的匹配机制工作的是在单个任务中以数组的形式传递您的值
因此,上述两项任务将成为:
-名称:foo.example.org文本
路线53:
覆盖:真
命令:创建
专区:example.org
记录:foo.example.org。
类型:TXT
ttl:300
价值:
-“酒吧”
-“酒吧”
aws_访问密钥:{{istic_aws_密钥}}
aws_secret_密钥:{{istic_aws_secret}}
在您的情况下,请注意您的DKIM记录是完全错误的 查看DNS记录的结果,同时使用实际剧本进行设置:
dig google._domainkey.ludoistic.com TXT
这将为您创建一个唯一的DKIM TXT记录,并最终解决您的更改状态问题,因为现在,您将拥有一个唯一的TXT,并且route53模块将正常工作
一般来说,从我所理解的读和模块两个方面来看,这似乎是发生的,因为您在多个分离的任务中设置TXT记录,当模块将考虑和比较时。
所以我知道你现在正在做的是:
-名称:foo.example.org文本
路线53:
覆盖:真
命令:创建
专区:example.org
记录:foo.example.org。
类型:TXT
ttl:300
值:“bar”
aws_访问密钥:{{istic_aws_密钥}}
aws_secret_密钥:{{istic_aws_secret}}
-名称:foo.example.org文本
路线53:
覆盖:真
命令:创建
专区:example.org
记录:foo.example.org。
类型:TXT
ttl:300
值:“bar”
aws_访问密钥:{{istic_aws_密钥}}
aws_secret_密钥:{{istic_aws_secret}}
这将永远是一个变化,因为foo.ludoistic.com的整个TXT记录。永远不会只匹配其中的一部分
相反,您应该做的是,让模块的匹配机制工作的是在单个任务中以数组的形式传递您的值
因此,上述两项任务将成为:
-名称:foo.example.org文本
路线53:
覆盖:真
命令:创建
专区:example.org
记录:foo.example.org。
类型:TXT
ttl:300
价值:
-“酒吧”
-“酒吧”
aws_访问密钥:{{istic_aws_密钥}}
aws_secret_密钥:{{istic_aws_secret}}
好的,我解决了这个问题,下面的β。εηοιτ。βε给了我正确的答案 文本记录被创建为一个数组,因此当它进入DNS时,会返回四个独立的非顺序答案。它必须是四个独立的部分,因为DNS只能处理每个记录255个字符- 解决方案是在一个大的单引号ansible值内使用空格分隔的双引号DNS记录,因此: -名称:谷歌 y、 ludoistic.com文本 路线53: 覆盖:真 命令:创建 专区:ludoistic.com 记录:谷歌。 类型:TXT ttl:300 值:'v=DKIM1;k=rsa;p=miibijanbgkqhkig9w0baqefaocaq8amiibcgkcaqeaup2hbfv7pqui+z8j634065jEtT eW4km3D7Vnt+tVQt+76mBp18mAb5C+xl70ks6luetymrb3fo6qbelq96bz4knjto62nbfeko2i/AuIO91ksKaL01En5wrH b6oo9jyhyhjhj231edz1edz1af6ebkri9dy5wyslul1wyivyivyivyivjk/dda9hvmtmtmtmtgv87voqqyyqyjjj+skd7vqfg7vjj/vhdcGkQ7/pFa+EQO4E2MFN22MnxHLW1AGSHJ3PSGVPLYXZ3JHQIUO6BBI4ZUUZC1MOLRZJKMCH/cXbkB+f/XUVNH9r0uOaZHt LXH+ZWIKJUVFSTCdZYQOF2TVSWIDAQAB' aws_访问密钥:{{istic_aws_密钥}} aws_secret_密钥:{{istic_aws_secret}} 标签: -放荡的
好的,我解决了这个问题,下面的β。εηοιτ。βε给了我正确的答案 文本记录被创建为一个数组,因此当它进入DNS时,会返回四个独立的非顺序答案。它必须是四个独立的部分,因为DNS只能处理每个记录255个字符- 解决方案是在一个大的单引号ansible值内使用空格分隔的双引号DNS记录,因此: -名称:google._domainkey.ludoistic.com。-文本 路线53: 覆盖:真 命令:创建 专区:ludoistic.com 记录:谷歌。 类型:TXT ttl:300 值:'v=DKIM1;k=rsa;p=miibijanbgkqhkig9w0baqefaocaq8amiibcgkcaqeaup2hbfv7pqui+z8j634065jEtT eW4km3D7Vnt+tVQt+76mBp18mAb5C+xl70ks6luetymrb3fo6qbelq96bz4knjto62nbfeko2i/AuIO91ksKaL01En5wrH b6oo9jyhyhjhj231edz1edz1af6ebkri9dy5wyslul1wyivyivyivyivjk/dda9hvmtmtmtmtgv87voqqyyqyjjj+skd7vqfg7vjj/vhdcGkQ7/pFa+EQO4E2MFN22MnxHLW1AGSHJ3PSGVPLYXZ3JHQIUO6BBI4ZUUZC1MOLRZJKMCH/cXbkB+f/XUVNH9r0uOaZHt LXH+ZWIKJUVFSTCdZYQOF2TVSWIDAQAB' aws_访问密钥:{{istic_aws_密钥}} aws_secret_密钥:{{istic_aws_secret}} 标签: -放荡的
覆盖之所以存在,是因为有时值会更改,并且添加一个额外的步骤来删除记录以记住该特定值何时更改,这对于以后的其他人来说是一条通向神秘bug的途径。但是,非多行记录不会发生这种情况。之所以会发生覆盖,是因为有时值会更改,并且添加一个额外的步骤来删除记录,以记住此特定值何时更改,这对于以后的其他人来说是导致神秘错误的途径。但非多行记录不会出现这种情况。您可以在ansible社区/ansible开发IRC频道发布查询,我相信ansible社区的人应该能够解决您的查询。所以您的问题是您有多个TXT记录,对吗?我最初认为标识符可能是您的,但似乎它只能设置为。而且,我是否正确地理解您在多个任务中设置了多个记录?您可以在ansible社区/ansible-devel IRC频道发布查询,我相信Ansible社区的人应该能够解决您的查询。所以您的问题是您有多个TXT记录,对吗?我最初认为标识符可能是适合您的,但似乎它只能设置为。而且,您在多个任务中设置这些多个记录,我是否正确地理解了?我不确定您从何处获得了多个任务位?问题中的代码是影响记录的唯一因素-完整的源代码是,我认为这与您的组合任务相同。因为根据模块所做的检查,这可能是失败的原因:也就是说,查看您现有的DNS,您的语法和生成的DKIM就是全部wrong@Aquarion更多关于编辑答案中更正确的DKIM的信息拆分记录是因为DNS记录不允许超过255个字符-运行上述操作将导致*致命:[archipelago.water.gkhs.net]:失败!=>{更改:false,msg:[无效的资源记录:致命问题:characterStringToolLong值太长,与'v=DKIM1;k=rsa;p=[cut]]}-我不确定多任务位是从哪里获得的?问题中的代码是影响记录的唯一因素-完整的源代码是,我认为这与您的组合任务相同。因为根据模块所做的检查,这可能是失败的原因:也就是说,查看您现有的DNS,您的语法和生成的DKIM就是全部wrong@Aquarion更多关于编辑答案中更正确的DKIM的信息拆分记录是因为DNS记录不允许超过255个字符-运行上述操作将导致*致命:[archipelago.water.gkhs.net]:失败!=>{更改:false,msg:[无效的资源记录:致命问题:characterStringToolLong值太长,与'v=DKIM1;k=rsa;p=[cut]]一起遇到]-
; <<>> DiG 9.10.6 <<>> google._domainkey.stackoverflow.com TXT
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33678
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google._domainkey.stackoverflow.com. IN TXT
;; ANSWER SECTION:
google._domainkey.stackoverflow.com. 300 IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCbf2b+8IwDGfgu5u/9kY4d3Corv9C2UtQyLWqHer1vNmWprWnjHDNWwE7nL943WOdDSGGhwKrprrFbCJrHsZ8Yz+UR52zeySiwJi7eIoVl6SDa6DXSlh2bYKwgJUuCF5blhY8weRwpf0wAKK8i9TmZbx+5vBZ2tAGAa1MW6VkFDwIDAQAB"
;; AUTHORITY SECTION:
stackoverflow.com. 99395 IN NS ns-1033.awsdns-01.org.
stackoverflow.com. 99395 IN NS ns-358.awsdns-44.com.
stackoverflow.com. 99395 IN NS ns-cloud-e1.googledomains.com.
stackoverflow.com. 99395 IN NS ns-cloud-e2.googledomains.com.
;; Query time: 105 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sat Jun 20 10:05:47 CEST 2020
;; MSG SIZE rcvd: 443