Ah, silly me. As is my wont, I overthought this. This works to do what I want:
--- - hosts: myhost gather_facts: False become: yes become_method: sudo vars_files: - zones.yml vars: old_serial: "2023010301" next_serial: "{{ lookup('pipe', 'date +%Y%m%d') }}01" year: "{{ lookup('pipe', 'date +%Y) }}" tasks: - name: Add TXT entry to zone file lineinfile: dest: "{{ item }}" insertafter: EOF line: '_some-name TXT "aZBBBBhonRJiOCL1ZtkKMKnx7U2k3wbSswyClGb6wGk"' with_items: "{{ zone_files }}" - name: Update serial number replace: dest: "{{ item }}" regexp: '{{ old_serial }}' replace: '{{ next_serial }} with_items: "{{ zone_files }}" But, to make this even more automated, it would be good to auto-increment the serial number's last two digits (e.g. 20231113*01* to 20231113*02 *on every run of the playbook. Is that possible? On Monday, November 13, 2023 at 10:49:06 AM UTC-5 Dimitri Yioulos wrote: > Thanks, Todd! with your hints, I was able to get the results I want. > > Hopefully, I'm staying on-topic (and not being a pita) when I ask for > further assistance with this playbook, and lineinfile. Here's the playbook, > thus far: > > --- > - hosts: myhost > gather_facts: False > become: yes > become_method: sudo > > vars_files: > - zones.yml > > vars: > serial: "{{ lookup('pipe', 'date +%Y%m%d') }}01" > year: "{{ lookup('pipe', 'date +%Y) }}" > > tasks: > > - name: Add TXT entry to zone file > lineinfile: > dest: "{{ item }}" > insertafter: EOF > line: '_some-name TXT > "aZBBBBhonRJiOCL1ZtkKMKnx7U2k3wbSswyClGb6wGk"' > with_items: '{{ zone_files }}' > > - name: Update serial number > lineinfile: > dest: "{{ item }}" > regexp: "{{ item.year }}" > replace: "{{ item.serial }}" > with_items: '{{ zone_files }} > > I created a vars directory, and added a zones.yml file, with the > destination files I want to edit. The first task in the playbook above > works fine, but the second one fails. What I'm trying to accomplish with > the second task is to change the serial number in this line with the var > "serial" at the point where var "year" is in the line: > > 2023101002 > <(202)%20310-1002> ; Serial Number YYYYMMDDXX where XX is > incrimented by 1 if zone modified on same day. > > Note the spacing where the serial begins. > > I really appreciate the help. > On Friday, November 10, 2023 at 1:11:46 PM UTC-5 Todd Lewis wrote: > >> "lineinfile" should line up with "name" above. The "lineinfile:" is the >> mapping that it's complaining cannot be indented more than "name:". Such >> indentation creates a new context. Thus the message, "mapping values are >> not allowed in this context". >> >> Is there a reason to use the "key=value" format instead of: >> >> - name: Add to file >> ansible.builtin.lineinfile: >> dest: /somedir/somefile >> insertafter: EOF >> line: '_some-name TXT >> "aZJACEhonRJiOCL1ZtkKMKnx7U 4m5j bSswyClGb6wGk"' >> >> It isn't wrong. It just looks weird when you're used to the other style. >> >> Cheers, >> -- >> Todd >> >> >> On 11/10/23 12:18 PM, Dimitri Yioulos wrote: >> >> Thanks, Todd. I already tried that, and it fails: >> >> [WARNING]: Invalid characters were found in group names but not replaced, >> use -vvvv to see >> details >> [WARNING]: Found both group and host with same name: uoj >> ERROR! We were unable to read either as JSON nor YAML, these are the >> errors we got from each: >> JSON: Expecting value: line 1 column 1 (char 0) >> >> Syntax Error while loading YAML. >> mapping values are not allowed in this context >> >> The error appears to be in '/etc/ansible/playbooks/updatedns.yml': line >> 8, column 16, but may >> be elsewhere in the file depending on the exact syntax problem. >> >> The offending line appears to be: >> >> - name: Add to file >> lineinfile: dest=/somedir/somefile insertafter=EOF line='_some-name >> TXT "aZJACEhonRJiOCL1ZtkKMKnx7U 4m5j >> bSswyClGb6wGk"' >> ^ here >> >> On Friday, November 10, 2023 at 11:25:48 AM UTC-5 Todd Lewis wrote: >> >>> Single-quoted strings can contain double-quotes. So instead of >>> >>> line="something ending with a "double-quoted string"" >>> >>> do this: >>> >>> line='something ending with a "double-quoted string"' >>> >>> >>> On 11/10/23 8:33 AM, Dimitri Yioulos wrote: >>> >>> Good day, all. >>> >>> I want to add the following line to a file: >>> >>> _some-name TXT >>> "aZJACEhonRJiOCL1ZtkKMKnx7U4m5jbSswyClGb6wGk" >>> >>> I would think I'd use the following: >>> >>> lineinfile: dest=/somedir/somefile insertafter=EOF line="_acme-challenge >>> TXT >>> "aZJACEhonRJiOCL1ZtkKMKnx7U4m5jbSswyClGb6wGk" >>> >>> However, the quoted string at the end is screwing my up. How do I make >>> this work? Would ansible.builtin.blockinfile be better? If so, how would I >>> set that up? >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Ansible Project" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to ansible-proje...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/ansible-project/8cb39f61-4616-4be4-861d-60d726e74a96n%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/ansible-project/8cb39f61-4616-4be4-861d-60d726e74a96n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >>> >>> -- >>> Todd >>> >>> -- >> You received this message because you are subscribed to the Google Groups >> "Ansible Project" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to ansible-proje...@googlegroups.com. >> >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/ansible-project/23b4e841-fb09-4991-9f80-de932c49fd7en%40googlegroups.com >> >> <https://groups.google.com/d/msgid/ansible-project/23b4e841-fb09-4991-9f80-de932c49fd7en%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> >> -- >> Todd >> >> -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/f6e9075e-03ee-4ba1-a5e0-5eef5888a506n%40googlegroups.com.