'How is this way of writing ansible task named? Is it deprecated?

I have an old ansible repository that I forked some time ago (2 years+) where I had not much idea about ansible. There are a lot of tasks written in a form that I don't know if it is correct or if it is deprecated. They use the action: section of the task, and then they write what looks like standard ansible actions (in fact, ansible-link complains that I should use FQN for built in actions on those).

I tried searching but all the results that I find are not relevant, so I am asking here how is this module action usually referred to, and should I change it to plain yaml?

- name: Disallow password authentication
  action: lineinfile dest=/etc/ssh/sshd_config regexp="^PasswordAuthentication" line="PasswordAuthentication no" state=present
  notify: restart ssh


Solution 1:[1]

Regarding your question

How is this module action usually referred to

you may have a look into Playbook Keywords

"For example, action in task can be substituted by the name of any Ansible module."

"The ‘action’ to execute for a task, it normally translates into a C(module) or action plugin.".

Regarding your question

Is it deprecated?

Since it is referenced in the actual documenation without a note it seems to be not.

Regarding your question

There are a lot of tasks written in a form that I don't know if it is correct

Since it is referenced in the actual documenation without a note it seems to be correct syntax.

Therefore it is possible to write tasks like

  - name: Gather stored entitlement from repository service
    action:
      module: uri
      url: "https://{{ REPOSITORY_URL }}/api/system/security/certificates"
      method: GET
      url_username: "{{ ansible_user }}"
      url_password: "{{ ansible_password }}"
      validate_certs: yes
      return_content: yes
      status_code: 200
      body_format: json
    check_mode: false
    register: result

  - name: Show result
    debug:
      msg: "{{ result.json }}"
    check_mode: false

which in example gather installed certificates from a JFrog Artifactory repository service via REST API call, as well

  - name: Gather stored entitlement from repository service
    local_action:
      module: uri
      ...

local_action Same as action but also implies delegate_to: localhost

for Controlling where tasks run: delegation and local actions.

Nevertheless, the YAML format is the best practice. Therefore you should change it to plain YAML if possible.

Solution 2:[2]

Q: "Should I change it to plain YAML?"

A: Yes. The YAML format is the best practice

- name: Disallow password authentication
  lineinfile:
    dest: /etc/ssh/sshd_config
    regexp: "^PasswordAuthentication"
    line: "PasswordAuthentication no"
    state: present
  notify: restart ssh

To see details and examples about lineinfile run

shell> ansible-doc -t module lineinfile

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 Vladimir Botka