ansibleでファイルを操作しようとしたところ、search_stringでエラーが発生しファイル操作が出来ませんでした。
今回はその対応について。
ansible
ansibleはIaCの1つで、Redhat社が提供するオープンソース(課金版もあります)のIaCツールです。
クラウドのほかにLinux系のサーバOSやCisco系のNWOSに対応しています。
今回のエラー
エラー内容
エラーは以下の構文の実行時に発生しました。
- name: test ansible.builtin.lineinfile: path: xxxxxxxx state: present search_string: "xxxx" line: "xxxx"
エラー内容は以下の通りです。
fatal: [vpctestserver]: FAILED! => {"changed": false, "msg": "Unsupported parameters for (ansible.builtin.lineinfile) module: search_string Supported parameters include: attributes, backrefs, backup, create, firstmatch, group, insertafter, insertbefore, line, mode, owner, path, regexp, selevel, serole, setype, seuser, state, unsafe_writes, validate"}
調査
エラーメッセージ
エラーメッセージに「"Unsupported parameters for (ansible.builtin.lineinfile) module: search_string」とあるので、search_stringがansible.builtin.lineinfileでは対応していないと読み取れます。
対応しているは「attributes, backrefs, backup, create, firstmatch, group, insertafter, insertbefore, line, mode, owner, path, regexp, selevel, serole, setype, seuser, state, unsafe_writes, validate」であると。
しかしながら、ansibleのホームページ上はsearch_stringについて記載があるので、ansibleとして対応していないわけではなさそうです。
対応
ということで、既存のansibleをアンインストールし、PPAから最新のansibleを持ってくることにします。
$ sudo apt remove ansible $ sudo apt update $ sudo apt install software-properties-common $ sudo apt-add-repository --yes --update ppa:ansible/ansible $ sudo apt install ansible $ ansible --version ansible [core 2.16.11] config file = /etc/ansible/ansible.cfg configured module search path = ['/home/xxxx/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3/dist-packages/ansible ansible collection location = /home/xxxx/.ansible/collections:/usr/share/ansible/collections executable location = /usr/bin/ansible python version = 3.10.12 (main, Jul 29 2024, 16:56:48) [GCC 11.4.0] (/usr/bin/python3) jinja version = 3.0.3 libyaml = True
無事、ansible 2.16が手に入りました。
この状態で実行するとsearch_stringのエラーは出なくなりました。