Как установить ansible на windows

Note

These instructions are provided by their respective communities. Any bugs/issues should be filed with that community to update these instructions. Ansible maintains only the pip install instructions.

The ansible package can always be installed from PyPI using pip on most systems but it is also packaged and maintained by the community for a variety of Linux distributions.

The following instructions will guide you through installing the ansible package with your preferred distribution’s package manager.

Note

For maintainers who wish to add distributions to this guide, installation instructions are included here only for distributions with a reasonably up-to-date version of ansible. The distribution MUST ensure that ansible-core and ansible versions are kept in sync to the extent that the distribution build system allows. Maintainers MUST include a way to contact them with their instructions here and are encouraged to join the Ansible Packaging Matrix room.

Installing Ansible on Fedora Linux

To install the batteries included ansible package on Fedora run

$ sudo dnf install ansible

If you prefer to install the minimal ansible-core package run

$ sudo dnf install ansible-core

Several Ansible collections are also available from the Fedora repositories as
standalone packages that users can install alongside ansible-core.
For example, to install the community.general collection run

$ sudo dnf install ansible-collection-community-general

See the Fedora Packages index
for a full list of Ansible collections packaged in Fedora.

Please file a bug against the
Fedora product in Red Hat Bugzilla to reach the package maintainers.

Installing Ansible from EPEL

Users of CentOS Stream, Almalinux, Rocky Linux, and related distributions
can install ansible or Ansible collections from the community maintained
EPEL
(Extra Packages for Enterprise Linux) repository.

After enabling the EPEL repository,
users can use the same dnf commands as for Fedora Linux.

Please file a bug against the
Fedora EPEL product in Red Hat Bugzilla to reach the package maintainers.

Installing Ansible on OpenSUSE Tumbleweed/Leap

$ sudo zypper install ansible

See OpenSUSE Support Portal <https://en.opensuse.org/Portal:Support> for additional help with Ansible on OpenSUSE.

Installing Ansible on Ubuntu

Ubuntu builds are available in a PPA here.

To configure the PPA on your system and install Ansible run these commands:

$ sudo apt update
$ sudo apt install software-properties-common
$ sudo add-apt-repository --yes --update ppa:ansible/ansible
$ sudo apt install ansible

Note

On older Ubuntu distributions, “software-properties-common” is called “python-software-properties”. You may want to use apt-get rather than apt in older versions. Also, be aware that only newer distributions (that is, 18.04, 18.10, and later) have a -u or --update flag. Adjust your script as needed.

Installing Ansible on Debian

Debian users can use the same source as the Ubuntu PPA (using the following table).

Debian

Ubuntu

Debian 11 (Bullseye)

->

Ubuntu 20.04 (Focal)

Debian 10 (Buster)

->

Ubuntu 18.04 (Bionic)

Note

Ansible releases are only built for Ubuntu 18.04 (Bionic) or later releases.

Add the following line to /etc/apt/sources.list or /etc/apt/sources.list.d/ansible.list:

deb http://ppa.launchpad.net/ansible/ansible/ubuntu MATCHING_UBUNTU_CODENAME_HERE main

Example for Debian 11 (Bullseye)

deb http://ppa.launchpad.net/ansible/ansible/ubuntu focal main

Then run these commands:

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
$ sudo apt update
$ sudo apt install ansible

Installing Ansible on Windows

You cannot use a Windows system for the Ansible control node. See Can Ansible run on Windows?

Introduction

Ansible is an Infrastructure as Code tool used for managing and monitoring remote servers.

Ansible requires a Linux-based system to run. This can be a problem if you want to use its features on a Windows 10 system. However, there are ways to install Ansible on Windows.

This tutorial will cover different ways you can install Ansible on Windows 10.

How to install and configure Ansible on Windows

Prerequisites

  • A system running Windows 10
  • A user account with administrator privileges

There are three ways to run Ansible on Windows 10:

  • Cygwin
  • Linux Virtual Machine
  • Enabling Ubuntu on Windows 10

We shall explain all three methods of installing Ansible on Windows.

Method 1: Using Cygwin

Cygwin is a POSIX-compatible environment that lets you run tools and code designed for Unix-like operating systems on Microsoft Windows.

Even though the default Cygwin installation contains hundreds of tools for Unix-based systems, Ansible is not one of them. You must manually add Ansible during the installation process.

To install Ansible on Windows using Cygwin, follow these steps:

1. Download the Cygwin installation file. This file is compatible with both the 32-bit and 64-bit versions of Windows 10. It automatically installs the right version for your system.

2. Run the Cygwin installation file. On the starting screen of the installation wizard, click Next to continue.

Starting Cygwin installation required for Installing Ansible on Windows

3. Select Install from Internet as the download source and click Next.

Download source for Cygwin instalation

4. In the Root Directory field, specify where you want the application installed, then click Next.

Root directory for Cygwin setup

5. In the Local Package Directory field, select where you want to install your Cygwin packages, then click Next.

Selecting local package directory for Cygwin

6. Choose the appropriate Internet connection option.

If you aren’t using a proxy, select Direct Connection.

Setting up internet connection

If you are using a proxy, select Use System Proxy Settings or enter the proxy settings manually with the Use HTTP/FTP Proxy.

Proxy settings for Cygwin

Click Next to continue.

7. Choose one of the available mirrors to download the installation files, then click Next.

Choosing a download website

8. On the Select Packages screen, change the View option to Full and type ‘ansible’ in the search bar.

Select both Ansible and Ansible Doc by checking the boxes under Src? and click Next to continue.

Selecting Ansible package

9. This screen lets you review the installation settings. To confirm and begin the install process, click on Next.

Finishing instalation of Ansible through Cygwin

10. The install wizard will download and install all the selected packages, including Ansible.

11. Once the installation is complete, select whether you want to add a Cygwin desktop and Start Menu icon, then click on Finish to close the wizard.

Creating shortcuts for Cygwin environment

Method 2: Using a Linux Virtual Machine

Another way to install Ansible on Windows 10 is to use a virtualization tool and a Linux virtual box.

In this example, we will use Oracle VM VirtualBox to set up an Ubuntu virtual machine and install Ansible.

Step 1: Setting Up VirtualBox

1. Download the VirtualBox installation file.

2. Run the VirtualBox installation file.

On the starting screen of the installation wizard, click Next to continue.

VirtualBox installation wizard screen

3. Use this screen to select which features of VirtualBox you want to install. This is also where you can set the install location. Click Next to continue.

Configuring VM VirtualBox instalation required for Ansible instalation on Ubuntu virtual machine

4. Choose whether you want to add Desktop, Start Menu, and Quick Launch Bar shortcuts and add file associations. Click Next to continue.

Creating shortcuts for Virtualbox

5. A new screen will warn you that the install wizard needs to reset your network connection. Click Yes to continue.

Installing Network Interfaces for VirtualBox required for setting up Ansible

6. On the next screen, click Install to begin the installation process.

Finishing up installation of VirtualBox

7. The install wizard might prompt you to add a VirtualBox USB device. Click Yes to continue.

8. Click Finish to complete the installation.

Starting VirtualBox required for installing Ansible on Windows virtual machine

Step 2: Creating an Ubuntu 20.04 Virtual Box

1. Download the Ubuntu 20.04 desktop image.

2. On the VirtualBox starting screen, click New.

Creating a new Linux virtual machine in VirtualBox

3. Type in the name of your virtual machine. If the name contains the word ‘Ubuntu’, the operating system dropdown menu will automatically update to Ubuntu (64-bit). If not, you can select the operating system manually using the dropdown menu. Click Next to continue.

Select a name and operating system for your new VM to Install Ansible on Ubuntu virtual machine

4. Set the amount of RAM you want the virtual machine to have.

Click Next to continue.

Set the amount of RAM for your new VM

Note: By default, Oracle VM VirtualBox assigns 1024MB of RAM to every virtual box. Make sure you assign enough RAM to your new virtual box, or it will not work properly.

5. Select a hard disk option for your virtual machine.

Choose Create a virtual hard disk now if you are creating a brand new VM. Click Create to continue.

Set up a hard disk for your new VM

6. Choose the type of virtual hard disk you want to create. Click Next.

Choose the type of hard disk for your new VM

7. Choose if the new virtual hard disk has a fixed amount of space or if you want it to allocate space dynamically. Select Fixed size and click Next.

Choose if the hard disk for your new VM has fixed or dynamic size

8. Select the location of the virtual hard disk on your computer and enter the size limit.

For this example, we will set the size limit to 10GB. Click Create to continue.

Select the location and size of the hard disk for your new VM

Note: Just like with RAM, you need to make sure you assign enough hard disk space to your virtual machine. VirtualBox sets the fixed-size hard disk at 10GB by default.

9. Select the new virtual machine you just created on the left-hand side of the VirtualBox starting screen. Click Start to run the new VM.

Start up your new VM

10. VirtualBox will prompt you to select a start-up disk. Click on the button next to the drop-down menu to open the optical Disk Selector.

Use Disk Selector to load up a startup disk

11. In the Optical Disk Selector, click Add.

Add a new disk in the optical Disk Selector

12. Find the Ubuntu 20.04 desktop image you downloaded in a previous step. Select the image and click Open.

Add the Ubuntu disk image

13. In the Optical Disk Selector, highlight the image you just added and click Choose.

Choose the new image in the Disk Selector

14. Click Start to begin the install process for Ubuntu 20.04.

Step 3: Installing Ansible

1. Once you are done installing Ubuntu 20.04, open the command terminal.

2. In the command terminal, enter the following command:

$ sudo apt update

This command refreshes the system’s package index and allows you to Install Ansible.

Refreshing the system's package index with the 'sudo apt update' command

3. To install Ansible, use the command:

$ sudo apt install ansible -y
Installing Ansible with the 'sudo apt install ansible -y' command

The rest of the install process is automated.

After you install it on you virtual machine, you can configure Ansible by setting up the hosts inventory file and checking the connections.

Method 3: Enabling Ubuntu on Windows 10

The third option is to use the Windows Subsystem for Linux to start up the Ubuntu terminal without setting up a virtual machine:

1. Open the Start menu and search for Turn Windows features on or off. Click on the shortcut when it appears.

Turn Windows features on or off.

2. Scroll down through the list of features until you see Windows Subsystem for Linux. Click on the checkbox, and then click OK to enable the feature.

Turning Windows Subsystem for Linux on, to install Ansible on Windows

3. Open the Microsoft Store. Search for Ubuntu and click on Get to install the latest version.

Get Ubuntu from the Windows Store

4. Once the installation is complete, click on Launch to start up the Ubuntu command terminal.

5. To install Ansible, enter the following set of commands:

$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible -y

Conclusion

If you followed the steps in this guide, you now have a copy of Ansible installed on your Windows 10 system.

Now you can use Ansible to manage and configure remote servers, and plan your CI/CD process.

Время на прочтение
5 мин

Количество просмотров 27K

Так получилось, что на нашем проекте сейчас используется Ansible. Я не буду останавливаться на том, что такое Ansible, как его готовить и с чем употреблять, а также на том, почему используется именно он (ибо выбор этот для условий эксплуатации под ОС от Microsoft оптимальным не назовешь) — в контексте этого поста предлагаю считать это данностью. Также ни для кого не секрет, что очень много веб-разработчиков по разным причинам работает под Windows. Нежелание сражаться с линуксами, нехватка денег на мак, танчики после работы, корпоративная политика — причин тоже может быть вагон. И о них в этом посте тоже не будет ни слова.

Если обстоятельства таковы, что вам нужно использовать Ansible под Windows (что, в принципе, не так уж и напряжно, хоть и нигде толком не описано) и, чего доброго, интегрировать это дело с Vagrant под Windows — прошу под кат.

Начну, пожалуй, с предупреждения. Если вы выбираете провиженер для автоматизации развертывания проектной инфраструктуры и в качестве мастера хотите использовать свою рабочую станцию на Windows и только её — лучше не используйте Ansible. Вот что написано в его документации по установке: “Currently Ansible can be run from any machine with Python 2.6 installed (Windows isn’t supported for the control machine)”. Всё описанное ниже — система костылей и подпорок на крайний случай. И если всё же крайний случай наступил или вы не ищете легких путей, поехали.

Установка

В общем, тут ничего удивительного нету. Если сабж не поддерживает Windows из коробки, а нормально работает только под *nix — можно попытаться устроить в винде небольшой *nix при помощи Cygwin. Более того, можно нагуглить уже готовые инстукции о том, как поднять Ansible под Cygwin, но мне удалось сделать это, как мне кажется, проще и чище, чем, например, автору этой инструкции.

Забегая вперед, скажу, что для меня это был первый опыт работы с Cygwin’ом (сам я давно на Linux’е, эта инстукция в целом — попытка дать возможность команде работать с опрометчиво выбранным без скидки на Windows инстументом) и установка пакетов там оказалась штукой не совсем для меня очевидной. Пришлось загуглить: оказывается, чтобы установить пакет, нужно, найдя его в списке, нажать вот на эту иконку — тогда изменится его статус; чтобы добавить или удалить пакеты, нужно запустить инсталлятор и идти тем же путем, что и при начальной установке.

Еще одна заметка. Если вы из Беларуси, используйте зеркало Белтелекома (http://ftp.mgts.by/pub/cygwin) — по опыту это единственный способ установить всё быстро. Для этого введите указанный адрес в поле под списком зеркал и нажмите Add, после чего выберите его в списке.

При установке Cygwin выберите следующие пакеты:

  • binutils (из Devel)
  • libuuid-devel (из Libs)
  • python (from Python)
  • python-crypto (from Python)
  • python-setuptools (from Python)

Опционально — gcc-core из Devel, тогда некоторые питоновские модули соберутся из исходников на C, в противном случае останется довольствоваться питоновской реализацией.

Чем объясняется этот набор? Нормально поставить Ansible можно только через питоновский пакетный менеджер pip, а он не работает без libuuid-devel, по меньшей мере на версии Cygwin для x86_64. binutils позволяет pip’у использовать Cygwin’овскую реализацию libuuid. Остальное, думаю, понятно — для самого Ansible.

Сразу после устновки Cygwin рекомендую объяснить ему, где находится ваша домашняя директория. По умолчанию он будет использовать в качестве оной какую-то свою папку; использование в этом качестве виндовой пользовательской папки кажется мне несколько более понятным и прозрачным; кроме того, это решает некоторые пролемы, которые возникают при запуске из-под Cygwin’а Vagrant’а — без дополнительных шаманских пассов он будет постоянно пересоздавать виртуалку.
Это можно сделать следующей командой, выполненной в Cygwin:
mkpasswd -l -c -p "$(cygpath -H)" > /etc/passwd

С обвязками закончили. Теперь сам Ansible. Тут всё неожиданно просто пару команд в Cygwin — и готово:

  • easy_install pip
  • pip install ansible==1.5.3

Почему именно 1.5.3, спросите? Это последняя на данный момент версия, работающая под Windows и не имещая некоторых назойливых багов.

Кроме этого, нужно объяснить Ansible, что такую фичу ssh, как ControlMaster, использовать не нужно (под Windows она не работает). Суть ее в следующем: ssh устанавливает соединение с хостом, создает сокет и не убивает его в течение некоторого конфигурируемого времени. При следующем подключении он, если возможно, использует этот сокет (уже установленное соединение), чтобы не устанавливать его заново и Ansible работает без накладных расходов по установке соедиения на каждый таск. Сделать это можно через переменную окружения: ANSIBLE_SSH_ARGS=-o ControlMaster=no или через конфиг Ansible, указавтам в секции [ssh_connection] опцию ssh_args = -o ControlMaster=no. На stackoverflow можно найти немного информации на эту тему.

В общем и целом, это всё. После этого из Cygwin можно использовать ansible-playbook как и в *nix.

Ansible с Vagrant: свяо атмосфреа

В теории, Vagrant интегрируется с Ansible красиво и прозрачно. Но только не под Windows. При первой же попытке запустить vagrant provision с Ansible в качестве провиженера под Windows вы получите какую-нибудь замысловатую ошибку. Причина достаточно проста: Ansible будет работать только под Cygwin. Найти простой способ заставить vagrant вызывать его нужным способом мне не удалось. Казалось бы, велика ли беда: соорудить батник по имени ansible-playbook.bat, который будет запускать уже реальный ansible-playbook в Cygwin, положить его в %Path% так, чтобы Vagrant попадал на него — всего-то! Но не тут-то было.

Vagrant под Windows — это такая же системы костылей и подпорок со своим bash’ем и коллекцией *nix утилит. Соответственно, просто написать bash не получится: Vagrant разбавит %Path% путем к своей директории с *nix-утилитами (кстати, тем же грешен и GitBash), а нам нужен именно Cygwin и именно его утилиты.

В итоге путем проб, ошибок и длительных страданий был рожден этот batch. Он может быть отвратителен, но никаких познаний в скриптинге под Windows у меня не было, поэтому слепил из того, что было, следуя методологии StackOverflow Driven Development.
Также в процессе оказалось, что это лучшее место, чтобы задать упомянутую выше переменную окружения ANSIBLE_SSH_ARGS. Задавать ее в конфиге неудобно, потому что Ansible не мержит конфиги, а берет первый найденный — соответственно, либо не получится использовать конфиг Ansible в контексте проекта, либо придется задать этот параметр для всех, даже для тех, кому он не нужен (а выключение ControlMaster очень сильно замедляет провиженинг). Также его можно было указать в Vagrant-файле, но тогда без дополнительных подпрыгиваний не получилось бы использовать ansible-playbook без Vagrant’а.

Этот .bat предполагает, что Cygwin’овский bin добавлен в %Path% (неважно, в какую именно часть), а путь к самому батнику добавлен в %Path% перед Cygwin’овским bin.

В итоге всё вышеописанное уложилось буквально в несколько достаточно кратких инстукций в шагах по развертыванию проекта и было более-менее успешно обкатано на вновь пришедших на проект разработчиках разного уровня.

Ansible это система управления конфигурациями, которая используется для автоматизации настройки инфраструктуры. Эта статья является кратким руководством по её установке.

Предварительные требования

Для установки Ansible потребуется наличие Python версии не ниже 3.5 и pip.

Чтобы проверить версию Python, выполните команду python --version или python3 --version. Если нужной версии Python нет, установите её с официального сайта.

MacOS/Linux

Для данных операционных систем предпочтительным является метод установки через pip.

Для этого надо запустить следующую команду:

pip install ansible

Или если нет pip, но есть pip3:

pip3 install ansible

Чтобы проверить, что всё успешно установилось, выполните команду

ansible --version

Если всё сделано верно, команда должна вывести установленную версию Ansible:

Windows

Установку Ansible на Windows мы рекомендуем выполнять через WSL. Вам необходимо иметь Windows 10 для работы с WSL. Если вы не знакомы с этой технологией, то рекомендуем почитать про неё подробнее здесь. Инструкция по установке WSL 2 от Microsoft вы найдёте здесь.

В качестве дистрибутива для WSL мы рекомендуем использовать Ubuntu 20.04 LTS. Его можно загрузить из официального магазина приложений.

После установки и настройки выбранного вами дистрибутива, установка Ansible ничем не отличается от его установки на Linux:

pip install ansible # or pip3
ansible --version # for installation verifying

Ansible is an open-source configuration management platform from Red Hat. So isn’t Ansible a Linux-only solution? While it is indeed primarily for Linux configuration management, you can, in fact, install Ansible on Windows.

Contents

  1. Examine the lab environment
  2. Install Ansible on Windows
    • Install Ansible
    • Edit the configuration file
    • Create the inventory file
    • Enable PowerShell remoting
  3. Test connectivity with ad hoc commands
  4. Run a playbook
  5. Closing thoughts

Ansible is a Python application that was created as a low-overhead, sensible configuration management solution. You can use Ansible to prevent configuration drift and enforce compliance in both local and cloud environments. One of Ansible’s biggest advantages is its agentless architecture.

The machine you use to perform your configuration management tasks is called the control node; this machine must run Linux (WSL on Windows is fine) and have Python installed. Your managed nodes are recorded in a simple INI or YAML file called inventory. I recommend you use Visual Studio Code for Ansible development, which is excellent, and it’s also simple to integrate VS Code with WSL.

The network communications between the Ansible control and management nodes take place either with Secure Shell (SSH) or Windows Remote Management (WinRM). So, you don’t have to worry about opening any nonstandard ports in your network infrastructure.

You can do administration by running the Ansible command-line interface (CLI) interactively, but the deeper power of Ansible is evident when you encapsulate your configuration management tasks in YAML playbooks. You can even aggregate multi-playbook solutions into Ansible roles and share them with the community through the Ansible Galaxy.

You can orchestrate all of your enterprise configuration management from your workstation. But isn’t there a central «command and control» available for Ansible?» The answer here is «Yes,» and it’s called the Red Hat Ansible Automation Platform (formerly called Ansible Tower).

The Ansible Automation Platform is a paid product that gives administrators a centralized REST API and web portal from which to control your nodes.

Red Hat Ansible Automation Platform web console UI

Red Hat Ansible Automation Platform web console UI

Examine the lab environment

Take a look at the screenshot below while I walk you through my simple Windows lab environment. I’ve got two Windows Server 2022 hosts: dc1 is my Active Directory domain controller acting as my Ansible control node, and mem1 is a domain member server acting as a managed node.

Client–server network communications take place on either TCP 5985 (HTTP) or TCP 5986 (HTTPS) via WinRM PowerShell remoting.

The control node has Python 3 and Ansible installed under Windows Subsystem for Linux (WSL). While Linux-managed nodes need to have Python installed, Windows nodes are different—they need only WinRM PowerShell remoting enabled.

Ansible lab environment

Ansible lab environment

Install Ansible on Windows

As mentioned previously, the Ansible server bits run only on Linux. Thus, you’ll need to set up WSL2 on your Windows Server control node before you can install Ansible. It’s really only one command to install WSL2 with Ubuntu:

wsl --install

Install Ansible

Once WSL is ready, open a WSL command prompt, and run the following Terminal commands to install Ansible on Windows. The Ansible docs are a required reference for you as well.

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible -y

You can verify Ansible installation completed successfully by running ansible –-version; I show you my output in the screenshot below.

Verifying Ansible installation

Verifying Ansible installation

Edit the configuration file

Take special note of the location of the default Ansible configuration file: /etc/ansible/ansible.cfg. Ansible stores all its configuration properties in this INI-format text file. While this is the global location, you can override its values by specifying a configuration file in another path.

While we’re on the subject, go ahead and open the config file with a text editor such as nano:

sudo nano /etc/ansible/ansible.cfg

Add the following text block to the top of the file:

[defaults]
Inventory=/etc/ansible/hosts

Create the inventory file

We need to add dc1 and mem1 to our Ansible inventory file so that we can include these machines in our Ansible configuration management tasks. Run these commands to create the file and open it in nano:

sudo touch /etc/ansible/hosts
sudo nano /etc/ansible/hosts

Next, add the following text to the file, save your work, and exit nano:

[control]
dc1 ansible_host=10.0.2.15

[infra]
mem1 ansible_host=10.0.2.16

[infra:vars]
ansible_user=administrator
ansible_password=P@$$w0rd143!
ansible_port=5986
ansible_connection=winrm
ansible_winrm_transport=basic
ansible_winrm_server_cert_validation=ignore

There’s a lot going on in that INI-format inventory file. Let me explain each part:

  • [control], [infra]: These are host groups. We put our controller node in a group called control and our managed node in a group called infra.
  • ansible_host: This is an Ansible built-in variable that tells Ansible the DNS host name or IP address to use when communicating with that node. It’s optional, but a nice way to use a short alias name for a node (think of how many nonintuitive DNS names you use in your environment).
  • [infra:vars]: Variables operate in Ansible like they do in any programming language: reusable key:value pairs. Here, we define variables that instruct Ansible to use WinRM as our transport and the built-in local Administrator account and password as connection credentials.

NOTE: Obviously, you never want to expose passwords in plain text in any file. Ansible presents a number of ways to protect sensitive information. These include encrypting the relevant files, using Ansible Vault, or a third-party secrets solution. This subject is too broad to be included in this introductory tutorial.

Enable PowerShell remoting

Ansible provides a PowerShell script that simplifies the WinRM listener configuration. You’ll want to run the commands below on both your control node and your management node.

Test connectivity with ad hoc commands

Now let’s undertake some actual configuration management with Ansible. We’ll work from the control node in your WSL prompt from now on.

When you install Ansible, you get a library of built-in modules each of which covers a particular product or technology. The Windows Ansible modules all have the prefix win_. Run the ansible-doc Ansible CLI command to see all the available built-in modules:

ansible-doc -l | grep 'win'

Some of the most common built-in Windows Ansible modules include the following:

  • win_domain_controller: Manage both domain controller and member server state for target hosts
  • win_file: Create or remove files and folders
  • win_ping: Test network connectivity
  • win_regedit: Add, change, and remove Registry keys and values
  • win_setup: Gather facts about target hosts
  • win_shell: Execute shell or PowerShell commands on target hosts
  • win_whoami: Get information about the current user and target host

The command below is the de facto connectivity check between your Ansible control node and the managed nodes. In this example, we target the inventory’s infra group; you can specify the all keyword to target all nodes in the inventory.

ansible infra -m win_ping

Testing node connectivity with the win_ping module

Testing node connectivity with the win_ping module

Ansible «facts» refer to node metadata. You can easily retrieve all such facts by invoking the built-in win_whoami module:

ansible infra -m win_whoami

Gathering Ansible facts with the win_whoami module

Gathering Ansible facts with the win_whoami module

Run a playbook

Running Ansible CLI commands in an ad hoc fashion is convenient when you’re in a pinch. However, you want to focus the bulk of your configuration management on playbooks.

In the following example, I create a new file called apache.yaml to install the Apache web server:

---
- name: Installing Apache MSI
  hosts: win

  tasks:
    - name: Download the Apache installer
      win_get_url:
        url: https://archive.apache.org/dist/httpd/binaries/win32/httpd-2.2.25-win32-x86-no_ssl.msi
        dest: C:\httpd-2.2.25-win32-x86-no_ssl.msi

    - name: Install MSI
      win_package:
        path: C:\ansible_examples\httpd-2.2.25-win32-x86-no_ssl.msi
        state: present

Now beware: YAML is not only case-sensitive but VERY finicky about indentation. Some brief explanatory notes about the Ansible playbook structure:

  • hosts: Specify inventory groups, inventory hosts, or all or ungrouped keywords to target hosts
  • tasks: Each play in a playbook consists of one or more tasks, which are atomic units of work
  • win_get_url, win_package: These are two built-in modules that download the Apache web server software installer and then install it

Run the ansible-playbook command to run the playbook:

ansible-playbook iis.yaml

Viewing playbook run state in WSL

Viewing playbook run state in WSL

Ansible playbooks are idempotent, which means you can run them over and over again, and only changes you make to the file will be applied to the target nodes.

Use the built-in win_stat module to verify that the Apache software directory is present on the target node:

ansible infra -m win_stat -a "path='C:\Program Files (x86)\Apache Software Foundation\Apache2.2'"

Notice that the stat: dictionary contains an «exists»: true key/value pair for the Apache web server installation directory.

Closing thoughts

I hope you have a clearer idea of what Ansible is and how it works in Windows Server environments. To be sure, we’ve only scratched the surface of this broad and deep topic. Let me leave you with some Ansible doc links you may want to study next.

Subscribe to 4sysops newsletter!

  • Variables
  • Privilege escalation
  • Inventories
  • Configuration file reference
  • Protecting secrets

avataravatar

  • Как установить arch linux рядом с windows 10
  • Как установить 1903 на windows 10
  • Как установить aida 64 на windows 10
  • Как установить android x86 рядом с windows
  • Как установить appxbundle на windows 10 ltsc