Chapter 3. Installing Ansible development tools Red Hat provides two options for installing Ansible development tools. Installation on a RHEL container running inside VS Code. You can install this option on MacOS, Windows, and Linux systems. Installation on your local RHEL system using an RPM (Red Hat Package Manager) package. 3.1. Requirements To install and use Ansible development tools, you must meet the following requirements. Extra requirements for Windows installations and containerized installations are indicated in the procedures. Python 3.10 or later. VS Code (Visual Studio Code) with the Ansible extension added. See Installing VS Code . For containerized installations, the Micorsoft Dev Containers VS Code extension. See Installing and configuring the Dev Containers extension . A containerization platform, for example Podman, Podman Desktop, Docker, or Docker Desktop. Note The installation procedure for Ansible development tools on Windows covers the use of Podman Desktop only. See Installing Podman Desktop on a Windows machine . You have a Red Hat account and you can log in to the Red Hat container registry at registry.redhat.io . For information about logging in to registry.redhat.io , see Authenticating with the Red Hat container registry . 3.1.1. Requirements for Ansible development tools on Windows If you are installing Ansible development tools on a container in VS Code on Windows, there are extra requirements: Windows Subsystem for Linux(WSL2) Podman Desktop 3.1.1.1. Installing WSL Install WSL2 without a distribution: USD `wsl --install --no-distribution` Use cgroupsv2 by disabling cgroupsv1 for WSL2: Edit the %USERPROFILE%/wsl.conf file and add the following lines to force cgroupv2 usage: [wsl2] kernelCommandLine = cgroup_no_v1="all" 3.1.1.2. Installing Podman Desktop on a Windows machine Install Podman Desktop. Follow the instructions in Installing Podman Desktop and Podman on Windows in the Podman Desktop documentation. You do not need to change the default settings in the set-up wizard. Ensure the podman machine is using cgroupsv2 : USD podman info | findstr cgroup Test Podman Desktop: USD podman run hello 3.1.1.3. Configuring settings for Podman Desktop Add a %USERPROFILE%\bin\docker.bat file with the following content: @echo off podman %* This avoids having to install Docker as required by the VS Code Dev Container extension. Add the %USERPROFILE%\bin directory to the PATH . Select Settings and search for "Edit environment variables for your account" to display all of the user environment variables. Highlight "Path" in the top user variables box, click Edit and add the path. Click Save to set the path for any new console that you open. 3.1.2. Authenticating with the Red Hat container registry All container images available through the Red Hat container catalog are hosted on an image registry, registry.redhat.io . The registry requires authentication for access to images. To use the registry.redhat.io registry, you must have a Red Hat login. This is the same account that you use to log in to the Red Hat Customer Portal (access.redhat.com) and manage your Red Hat subscriptions. Note If you are planning to install the Ansible development tools on a container inside VS Code, you must log in to registry.redhat.io before launching VS Code so that VS Code can pull the devtools container from registry.redhat.io . If you are running Ansible development tools on a container inside VS Code and you want to pull execution environments or the devcontainer to use as an execution environment, you must log in from a terminal prompt within the devcontainer from a terminal inside VS Code. You can use the podman login or docker login commands with your credentials to access content on the registry. Podman USD podman login registry.redhat.io Username: my__redhat_username Password: *********** Docker USD docker login registry.redhat.io Username: my__redhat_username Password: *********** For more information about Red Hat container registry authentication, see Red Hat Container Registry Authentication on the Red Hat customer portal. 3.1.3. Installing VS Code To install VS Code, follow the instructions on the Download Visual Studio Code page in the Visual Studio Code documentation. 3.1.4. Installing the VS Code Ansible extension The Ansible extension adds language support for Ansible to VS Code. It incorporates Ansible development tools to facilitate creating and running automation content. For a full description of the Ansible extension, see the Visual Studio Code Marketplace . See Learning path - Getting Started with the Ansible VS Code Extension for tutorials on working with the extension. To install the Ansible VS Code extension: Open VS Code. Click the Extensions ( ) icon in the Activity Bar, or click View Extensions , to display the Extensions view. In the search field in the Extensions view, type Ansible Red Hat . Select the Ansible extension and click Install . When the language for a file is recognized as Ansible, the Ansible extension provides features such as auto-completion, hover, diagnostics, and goto. The language identified for a file is displayed in the Status bar at the bottom of the VS Code window. The following files are assigned the Ansible language: YAML files in a /playbooks directory Files with the following double extension: .ansible.yml or .ansible.yaml Certain YAML names recognized by Ansible, for example site.yml or site.yaml YAML files whose filename contains "playbook": playbook .yml or playbook .yaml If the extension does not identify the language for your playbook files as Ansible, follow the procedure in Associating the Ansible language to YAML files . 3.1.5. Configuring Ansible extension settings The Ansible extension supports multiple configuration options. You can configure the settings for the extension on a user level, on a workspace level, or for a particular directory. User-based settings are applied globally for any instance of VS Code that is opened. Workspace settings are stored within your workspace and only apply when the current workspace is opened. It is useful to configure settings for your workspace for the following reasons: If you define and maintain configurations specific to your playbook project, you can customize your Ansible development environment for individual projects without altering your preferred setup for other work. You can have different settings for a Python project, an Ansible project, and a C++ project, each optimized for the respective stack without the need to manually reconfigure settings each time you switch projects. If you include workspace settings when setting up version control for a project you want to share with your team, everyone uses the same configuration for that project. Procedure Open the Ansible extension settings: Click the 'Extensions' icon in the activity bar. Select the Ansible extension, and click the 'gear' icon and then Extension Settings to display the extension settings. Alternatively, click Code Settings Settings to open the Settings page. Enter Ansible in the search bar to display the settings for the extension. Select the Workspace tab to configure your settings for the current VS Code workspace. The Ansible extension settings are pre-populated. Modify the settings to suit your requirements: Check the Ansible Validation Lint: Enabled box to enable ansible-lint. Check the Ansible Execution Environment: Enabled box to use an execution environment. Specify the execution environment image you want to use in the Ansible > Execution Environment: image field. To use Red Hat Ansible Lightspeed, check the Ansible > Lightspeed: Enabled box, and enter the URL for Lightspeed. The settings are documented on the Ansible VS Code Extension by Red Hat page in the VisualStudio marketplace documentation. 3.1.6. Associating the Ansible language to YAML files The Ansible VS Code extension works only when the language associated with a file is set to Ansible. The extension provides features that help create Ansible playbooks, such as auto-completion, hover, and diagnostics. The Ansible VS Code extension automatically associates the Ansible language with some files. The procedures below describe how to set the language for files that are not recognized as Ansible files. Manually associating the Ansible language to YAML files The following procedure describes how to manually assign the Ansible language to a YAML file that is open in VS Code. Open or create a YAML file in VS Code. Hover the cursor over the language identified in the status bar at the bottom of the VS Code window to open the Select Language Mode list. Select Ansible in the list. The language shown in the status bar at the bottom of the VS Code window for the file is changed to Ansible. Adding persistent file association for the Ansible language to settings.json Alternatively, you can add file association for the Ansible language in your settings.json file. Open the settings.json file: Click View Command Palette to open the command palette. Enter Workspace settings in the search box and select Open Workspace Settings (JSON) . Add the following code to settings.json . { ... "files.associations": { "*plays.yml": "ansible", "*init.yml": "yaml", } } 3.1.7. Installing and configuring the Dev Containers extension If you are installing the containerized version of Ansible development tools, you must install the Microsoft Dev Containers extension in VS Code. Open VS Code. Click the Extensions ( ) icon in the Activity Bar, or click View Extensions , to display the Extensions view. In the search field in the Extensions view, type Dev Containers . Select the Dev Containers extension from Microsoft and click Install . If you are using Podman or Podman Desktop as your containerization platform, you must modify the default settings in the Dev Containers extension. Replace docker with podman in the Dev Containers extension settings: In VS Code, open the settings editor. Search for @ext:ms-vscode-remote.remote-containers . Alternatively, click the Extensions icon in the activity bar and click the gear icon for the Dev Containers extension. Set Dev > Containers:Docker Path to podman . Set Dev > Containers:Docker Compose Path to podman-compose . 3.2. Installing Ansible development tools on a container inside VS Code The Dev Containers VS Code extension requires a .devcontainer file to store settings for your dev containers. You must use the Ansible extension to scaffold a config file for your dev container, and reopen your directory in a container in VS Code. Prerequisites You have installed a containerization platform, for example Podman, Podman Desktop, Docker, or Docker Desktop. You have a Red Hat login and you have logged in to the Red Hat registry at registry.redhat.io . For information about logging in to registry.redhat.io , see Authenticating with the Red Hat container registry . You have installed VS Code. You have installed the Ansible extension in VS Code. You have installed the Microsoft Dev Containers extension in VS Code. If you are installing Ansible development tools on Windows, launch VS Code and connect to the WSL machine: Click the Remote ( ) icon. In the dropdown menu that appears, select the option to connect to the WSL machine. Procedure In VS Code, navigate to your project directory. Click the Ansible icon in the VS Code activity bar to open the Ansible extension. In the Ansible Development Tools section of the Ansible extension, scroll down to the ADD option and select Devcontainer . In the Create a devcontainer page, select the Downstream container image from the Container image options. This action adds devcontainer.json files for both Podman and Docker in a .devcontainer directory. Reopen or reload the project directory: If VS Code detects that your directory contains a devcontainer.json file, the following notification appears: Click Reopen in Container . If the notification does not appear, click the Remote ( ) icon. In the dropdown menu that appears, select Reopen in Container . Select the dev container for Podman or Docker according to the containerization platform you are using. The Remote () status in the VS Code Status bar displays opening Remote and a notification indicates the progress in opening the container. Verification When the directory reopens in a container, the Remote () status displays Dev Container: ansible-dev-container . Note The base image for the container is a Universal Base Image Minimal (UBI Minimal) image that uses microdnf as a package manager. The dnf and yum package managers are not available in the container. For information about using microdnf in containers based on UBI Minimal images, see Adding software in a minimal UBI container in the Red Hat Enterprise Linux Building, running, and managing containers guide. 3.3. Installing Ansible development tools from a package on RHEL Ansible development tools is bundled in the Ansible Automation Platform RPM (Red Hat Package Manager) package. Refer to the Red Hat Ansible Automation Platform Installation guide documentation for information on installing Ansible Automation Platform. Prerequisites You have installed RHEL. You have registered your system with Red Hat Subscription Manager. You have installed a containerization platform, for example Podman or Docker. Procedure Run the following command to check whether Simple Content Access (SCA) is enabled: USD sudo subscription-manager status If Simple Content Access is enabled, the output contains the following message: Content Access Mode is set to Simple Content Access. If Simple Content Access is not enabled, attach the Red Hat Ansible Automation Platform SKU: USD sudo subscription-manager attach --pool=<sku-pool-id> Install Ansible development tools with the following command: USD sudo dnf install --enablerepo=ansible-automation-platform-2.4-for-rhel-8-x86_64-rpms ansible-dev-tools USD sudo dnf install --enablerepo=ansible-automation-platform-2.4-for-rhel-9-x86_64-rpms ansible-dev-tools Verification: Verify that the Ansible development tools components have been installed: USD rpm -aq | grep ansible The output displays the Ansible packages that are installed: ansible-sign-0.1.1-2.el9ap.noarch ansible-creator-24.4.1-1.el9ap.noarch python3.11-ansible-runner-2.4.0-0.1.20240412.git764790f.el9ap.noarch ansible-runner-2.4.0-0.1.20240412.git764790f.el9ap.noarch ansible-builder-3.1.0-0.2.20240413.git167ed5c.el9ap.noarch ansible-dev-environment-24.1.0-2.el9ap.noarch ansible-core-2.16.6-0.1.20240413.gite636132.el9ap.noarch python3.11-ansible-compat-4.1.11-2.el9ap.noarch python3.11-pytest-ansible-24.1.2-1.el9ap.noarch ansible-lint-6.14.3-4.el9ap.noarch ansible-navigator-3.4.1-2.el9ap.noarch python3.11-tox-ansible-24.2.0-1.el9ap.noarch ansible-dev-tools-2.5-2.el9ap.noarch On successful installation, you can view the help documentation for ansible-creator: USD ansible-creator --help usage: ansible-creator [-h] [--version] command ... The fastest way to generate all your ansible content. Positional arguments: command add Add resources to an existing Ansible project. init Initialize a new Ansible project. Options: --version Print ansible-creator version and exit. -h --help Show this help message and exit

Commands:
`wsl --install --no-distribution`
[wsl2] kernelCommandLine = cgroup_no_v1="all"
podman info | findstr cgroup
podman run hello
@echo off %*
podman login registry.redhat.io Username: my__redhat_username Password: ***********
docker login registry.redhat.io Username: my__redhat_username Password: ***********
{ "files.associations": { "*plays.yml": "ansible", "*init.yml": "yaml", } }
sudo subscription-manager status
Content Access Mode is set to Simple Content Access.
sudo subscription-manager attach --pool=<sku-pool-id>
sudo dnf install --enablerepo=ansible-automation-platform-2.4-for-rhel-8-x86_64-rpms ansible-dev-tools
sudo dnf install --enablerepo=ansible-automation-platform-2.4-for-rhel-9-x86_64-rpms ansible-dev-tools
rpm -aq | grep ansible
ansible-sign-0.1.1-2.el9ap.noarch ansible-creator-24.4.1-1.el9ap.noarch python3.11-ansible-runner-2.4.0-0.1.20240412.git764790f.el9ap.noarch ansible-runner-2.4.0-0.1.20240412.git764790f.el9ap.noarch ansible-builder-3.1.0-0.2.20240413.git167ed5c.el9ap.noarch ansible-dev-environment-24.1.0-2.el9ap.noarch ansible-core-2.16.6-0.1.20240413.gite636132.el9ap.noarch python3.11-ansible-compat-4.1.11-2.el9ap.noarch python3.11-pytest-ansible-24.1.2-1.el9ap.noarch ansible-lint-6.14.3-4.el9ap.noarch ansible-navigator-3.4.1-2.el9ap.noarch python3.11-tox-ansible-24.2.0-1.el9ap.noarch ansible-dev-tools-2.5-2.el9ap.noarch
ansible-creator --help usage: ansible-creator [-h] [--version] command The fastest way to generate all your ansible content. Positional arguments: command add Add resources to an existing Ansible project. init Initialize a new Ansible project. Options: --version Print ansible-creator version and exit. -h --help Show this help message and exit