Question 1,413 of 2,015
Python for Network AutomationhardMultiple ChoiceObjective-mapped

Quick Answer

The answer is that the playbook is missing `connection: network_cli` and `become: yes` directives, which are mandatory for the Ansible connection type for Cisco IOS when using modules like `ios_facts`. Unlike Linux hosts that use SSH by default, Cisco IOS devices require the `network_cli` connection plugin to establish a persistent CLI session, and privilege escalation via `become: yes` to enter enable mode for gathering facts like the serial number. On the ENCOR 350-401 exam, this tests your understanding that network automation modules operate differently from standard Ansible modules—a common trap is assuming default SSH settings work for network devices. Remember the mnemonic "No CLI, No Facts": if you forget `connection: network_cli` and `become: yes`, your playbook will fail to authenticate or escalate privileges, even if the module syntax is perfect.

350-401 Python for Network Automation Practice Question

This 350-401 practice question tests your understanding of python for network automation. The scenario asks you to isolate a root cause — eliminate options that address a different problem before choosing. After answering, compare your reasoning against the explanation and wrong-answer breakdown below. Once you have made your selection, read the full explanation to reinforce the concept and understand why each distractor is designed to mislead on exam day.

A network engineer writes an Ansible playbook to gather facts from a Cisco IOS device using the ios_facts module:

```yaml --- - name: Gather IOS Facts hosts: ios_devices gather_facts: no tasks: - name: Collect facts cisco.ios.ios_facts: gather_subset: - hardware register: device_facts

- name: Show serial number debug: msg: "Serial number is {{ device_facts['ansible_facts']['ansible_net_serialnum'] }}" ```

What is a potential issue with this playbook?

Question 1hardmultiple choice
Read the full Ansible explanation →

Answer choices

Why each option matters

Answer the question above first, then reveal the full breakdown to understand why each option is right or wrong.

Correct answer & explanation

The playbook is missing 'connection: network_cli' and 'become: yes' to enable network device access.

The playbook uses 'gather_facts: no' at the play level, which is fine. However, the ios_facts module returns facts under the key 'ansible_facts' by default, but the registered variable 'device_facts' will contain the entire response, including 'ansible_facts' as a subkey. The debug message tries to access 'device_facts['ansible_facts']['ansible_net_serialnum']', which is correct. But there is a subtle issue: The module 'ios_facts' requires the connection to be 'network_cli' and privilege escalation. If not set, the task may fail. Also, the 'gather_subset' parameter is misspelled as 'gather_subset' instead of 'gather_subset'? Actually, it's 'gather_subset' in the module. Wait, the correct parameter is 'gather_subset'? Let me check: In cisco.ios.ios_facts, the parameter is 'gather_subset' (with underscore). The playbook uses 'gather_subset' which is correct. Hmm. Another common issue: The 'ansible_net_serialnum' fact might not be available if the hardware subset does not include it. But hardware subset does include serial number. The real issue might be that the playbook does not specify 'connection: network_cli' and 'become: yes', which are required for network modules. That is the most likely problem.

Key principle: Authentication proves identity; authorization controls what that identity can do after login. Both must work for full privileged access.

Answer analysis

Option-by-option breakdown

For each option: why learners choose it and why it is or isn't the right answer here.

  • The 'gather_subset' parameter is misspelled; it should be 'gather_subset' (correct spelling).

    Why it's wrong here

    The parameter is correctly spelled as 'gather_subset'.

  • The playbook is missing 'connection: network_cli' and 'become: yes' to enable network device access.

    Why this is correct

    Network modules require these settings to function properly.

    Related concept

    Authentication checks who the user is.

  • The registered variable 'device_facts' should be accessed as 'device_facts.ansible_facts.ansible_net_serialnum' using dot notation.

    Why it's wrong here

    Both dot and bracket notation work in Ansible.

  • The 'hardware' subset is invalid; it should be 'all' to get serial number.

    Why it's wrong here

    The 'hardware' subset includes serial number.

Common exam traps

Common exam trap: authentication is not authorization

Logging in proves the user can authenticate. It does not automatically mean the user is allowed to enter privileged or configuration mode. Watch for AAA authorization, privilege level and command authorization details.

Detailed technical explanation

How to think about this question

This kind of question is testing the difference between identity and permission. A user may successfully log in to a router because authentication is working, but still fail to enter configuration mode because authorization is missing, misconfigured or mapped to a lower privilege level.

KKey Concepts to Remember

  • Authentication checks who the user is.
  • Authorization controls what the user is allowed to do after login.
  • Privilege levels affect access to EXEC and configuration commands.
  • AAA, TACACS+ and RADIUS can separate login success from command access.

TExam Day Tips

  • Do not assume successful login means full administrative access.
  • Look for words such as cannot enter configuration mode, privilege level, authorization or command access.
  • Separate login problems from permission problems before choosing the answer.

Key takeaway

Authentication proves identity; authorization controls what that identity can do after login. Both must work for full privileged access.

Real-world example

How this comes up in practice

A junior network technician can log in to a core router but cannot reach the enable prompt or configuration mode. The AAA server is authenticating the login — but the authorisation policy only grants privilege level 1, not 15. Authentication (who you are) is working; authorisation (what you can do) is not.

What to study next

Got this wrong? Here's your next step.

Review Cisco AAA concepts — authentication, authorization, and accounting. Study privilege levels (0–15), command authorization under TACACS+, and how RADIUS differs. Then practise related 350-401 questions on access control and AAA configuration.

Related practice questions

Related 350-401 practice-question pages

Use these pages to review the topic behind this question. This is how one missed question becomes focused revision.

Practice this exam

Start a free 350-401 practice session

Short sessions build daily habit. Longer sessions build exam-day stamina. Try a timed session to simulate real conditions.

FAQ

Questions learners often ask

What does this 350-401 question test?

Python for Network Automation — This question tests Python for Network Automation — Authentication checks who the user is..

What is the correct answer to this question?

The correct answer is: The playbook is missing 'connection: network_cli' and 'become: yes' to enable network device access. — The playbook uses 'gather_facts: no' at the play level, which is fine. However, the ios_facts module returns facts under the key 'ansible_facts' by default, but the registered variable 'device_facts' will contain the entire response, including 'ansible_facts' as a subkey. The debug message tries to access 'device_facts['ansible_facts']['ansible_net_serialnum']', which is correct. But there is a subtle issue: The module 'ios_facts' requires the connection to be 'network_cli' and privilege escalation. If not set, the task may fail. Also, the 'gather_subset' parameter is misspelled as 'gather_subset' instead of 'gather_subset'? Actually, it's 'gather_subset' in the module. Wait, the correct parameter is 'gather_subset'? Let me check: In cisco.ios.ios_facts, the parameter is 'gather_subset' (with underscore). The playbook uses 'gather_subset' which is correct. Hmm. Another common issue: The 'ansible_net_serialnum' fact might not be available if the hardware subset does not include it. But hardware subset does include serial number. The real issue might be that the playbook does not specify 'connection: network_cli' and 'become: yes', which are required for network modules. That is the most likely problem.

What should I do if I get this 350-401 question wrong?

Review Cisco AAA concepts — authentication, authorization, and accounting. Study privilege levels (0–15), command authorization under TACACS+, and how RADIUS differs. Then practise related 350-401 questions on access control and AAA configuration.

What is the key concept behind this question?

Authentication checks who the user is.

About these practice questions

Courseiva creates original exam-style practice questions with explanations and wrong-answer analysis. It does not publish real exam questions, exam dumps, or protected exam content. Learn why practice questions differ from exam dumps →

How Courseiva writes practice questions · Editorial policy

Keep practising

More 350-401 practice questions

Last reviewed: Jun 18, 2026

Question Discussion

Share a tip, memory trick, or ask about the reasoning behind this question. Do not post real exam questions, leaked content, braindumps, or copyrighted exam material. Comments are moderated and may be removed without notice.

Loading comments…

Sign in to join the discussion.

This 350-401 practice question is part of Courseiva's free Cisco certification practice question bank. Courseiva provides original exam-style practice questions with explanations, topic-based practice, mock exams, readiness tracking, and study analytics to help learners prepare for the 350-401 exam.