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 [email protected].
>>> 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 [email protected].
>>
>> 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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/f6e9075e-03ee-4ba1-a5e0-5eef5888a506n%40googlegroups.com.

Reply via email to