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.