ansible

From AIXTOOLS
Jump to: navigation, search

Contents

Ansible and AIX

Introduction

Ansible: 2.10 wheels for AIX
Python: Python3-3.6.12 py36

My goal is to get a tutorial working for Ansible with/on AIX

Installation

Download

Using my Python package - built to not have any dependencies other than a recent OpenSSL, and AIX 6.1 TL6 or later AND support for wheels - installation is fairly simple.

First, get the installp package from py36. Then download/install a recent pip, the ansible-bundle, and a helper script py_wheel_setup.

Additionally, I recommend installing virtualenv either directly (LPAR has direct access), or from this bundle python3-virtualenv-wheels.tar.bz2

Configuration

# installp -d aixtools.python.py36.3.6.12.0.I -aYXc aixtools.python.py36.adt aixtools.python.py36.rte
## use all to also get the man pages

# export PYTHONWARNINGS=ignore # optional
# bzip2 -dc ansible-2.10-wheels.tar.bz2 | tar xf -
  • while root update pip to a later (might not be the latest - but this will do)
# /opt/bin/pip3 install pip-20.2.3-py2.py3-none-any.whl
  • Now also install virtualenv - so that you can continue as non-root - and more easily cleanup if needed.
# bzip2 -dc python3-virtualenv-wheels.tar.bz2 | tar xf -
# pip3 install virtualenv/*.whl

At this point the base Python3 is complete. Become a regular user (PS1 == $)

Install Ansible in virtualenv

When finished with this part you will have Python and Ansible installed and ready for further experimentation.

First you need to create a virtualenv to do your later work in.

$ virtualenv --clear py36
$ . ./py36/bin/activate
$ mkdir py36/wheels
$ cd py36/wheels
$ cp $download_location/*.whl .
$ python3 $download_location/py_wheel_setup.py *.whl | ksh -x
$ pip install *.whl

When this finishes Ansible is installed in your virtualenv. Test it with the following command

$ ansible -m ping localhost

--Michael Felt (talk) 16:08, 6 October 2020 (CEST) To be continued

  • NOTE: you can also do everything as root - but still install ansible in a virtualenv created by root.

Getting Started

Introduction

The basic concepts I'll cover here are:

  • Control Node
  • Managed Nodes
  • Inventory

The other concepts will come - soon.

The Control Node is the server you have just installed. This node has the complete Ansible product installed.

The control node is also, by default, a Managed Node known as localhost. That is how we tested our installation above.

Defining target hosts

Lets start by going back to our test command - and look at the command syntax, noise, and the actual result.

 (py36) $ ansible localhost -m ping
/home/aixtools/py36/lib/python3.6/site-packages/cryptography/hazmat/bindings/openssl/binding.py:177: CryptographyDeprecationWarning: OpenSSL version 1.0.2 is no longer supported by the OpenSSL project, please upgrade. The next version of cryptography will drop support for it.
  utils.CryptographyDeprecationWarning,
localhost | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

"Deep" in python there is a warnings.warn() call with the message above. I don't really care about that right now, so to get rid of that message I add locally, and to my .profile (for future sessions).

(py36) $ export PYTHONWARNINGS=ignore
(py36) $ print "export PYTHONWARNINGS=ignore" >> ~/.profile

And while I think of it, add an alias to kickoff my virtualenv

(py36) $ print "py36='. ${HOME}/py36/bin/activate'" >> ~/.profile

The first Managed Node

I don't want to use Ansible only on the control node - I want to use it on managed nodes. So now, same command, but on the remote node x076.

(py36) $ ansible -m ping x076

If only it were so easy - my host x076 is unknown to Ansible

[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
[WARNING]: Could not match supplied host pattern, ignoring: x076

Ansible says it is missing an inventory, so in it's simplest form, we create an inventory

(py36) $ echo x076 >inventory
(py36) $ ansible x076 -m ping -i inventory
x076 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: aixtools@x076: Permission denied (publickey,password,keyboard-interactive).",
    "unreachable": true
}

One step further, but my local userid does not exist on x076 - so one more addition.

  • Prior to this I setup ssh connectivity to x076 so that my public key id (.ssh/id_ecdsa.pub) is included in root@x076:.ssh/authorised_keys
(py36) $ ansible x076 -m ping -i inventory -u root
[WARNING]: Platform aix on host x076 is using the discovered Python interpreter at /opt/bin/python3.6,
but future installation of another Python interpreter could change the meaning of that path.
See https://docs.ansible.com/ansible/2.10/reference_appendices/interpreter_discovery.html for more information.
x076 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/opt/bin/python3.6"
    },
    "changed": false,
    "ping": "pong"
}

We have a new warning message above - that is coming from the Ansible module ping. We shall deal with how to clear that up later.

Setting Ansible Defaults

Ansible.cfg

Inventory and Vars

Personal tools
Namespaces

Variants
Actions
Navigation
Downloads
Toolbox