DUICUO

Conda を使用して macOS 上の Ansible 環境を管理する

[[277082]]

Conda は、Ansible に必要なものすべてを仮想環境に集め、他のプロジェクトから分離します。

macOS を使用しており、Ansible の管理に携わっている Python 開発者の場合は、Conda パッケージ マネージャーを使用して、Ansible の作業をコア OS やその他のローカル プロジェクトから分離することをお勧めします。

AnsibleはPythonをベースにしています。macOSでAnsibleを動作させるためにCondaは必須ではありませんが、Pythonのバージョンとパッケージの依存関係の管理がはるかに容易になります。これにより、macOSでアップグレードされたPythonのバージョンを使用できるようになり、システム、Ansible、その他のプログラミングプロジェクト間でPythonパッケージの依存関係を独立して維持できます。

macOSにAnsibleをインストールする方法は他にもあります。Homebrewを使うこともできますが、Python開発(またはAnsible開発)に興味があるなら、Ansibleを別のPython仮想環境で管理すると、煩雑さが軽減されるかもしれません。私は、Pythonのバージョンや依存関係をシステムや/usr/localディレクトリにロードする代わりに、Condaを使う方がシンプルです。Condaを使うことで、Ansibleに必要なすべてのものを単一の仮想環境に集め、他のプロジェクトから完全に分離することができます。

この記事では、CondaをPythonプロジェクトとして使用し、Ansibleを他のプロジェクトから分離して管理する方法に焦点を当てています。Condaのインストール、新しい仮想環境の作成、Ansibleのインストール、そしてテストの方法について解説します。

前奏曲

最近、Ansible を学びたいと思ったので、インストールする最適な方法を見つける必要があります。

普段使っているワークステーションに何かをインストールする際は、基本的に慎重になっています。特に、ベンダーのデフォルトOS向けのアプリケーションを手動でアップデートするのは苦手です(これは長年Unixシステム管理者として培ってきた習慣です)。本当はPython 3.7を使いたいのですが、macOSのPythonパッケージは古い2.7なので、macOSのコアシステムに干渉する可能性のあるグローバルPythonパッケージはインストールしません。

そこで、ローカルのUbuntu 18.04仮想マシンでAnsibleの作業を始めました。これにより真のセキュリティ分離が実現しましたが、すぐに管理が非常に面倒であることに気づきました。そこで、ネイティブmacOSで柔軟かつ独立したAnsibleシステムを構築する方法を研究し始めました。

Ansible は Python をベースとしているため、Conda が理想的なソリューションのようです。

Condaをインストールする

Condaは、便利なパッケージおよび環境管理機能を提供するオープンソースソフトウェアです。複数のバージョンのPythonの管理、パッケージの依存関係のインストール、アップグレードの実行、プロジェクトの分離維持に役立ちます。Pythonの仮想環境を手動で管理している場合、Condaは作業を簡素化し、管理するのに役立ちます。詳細については、Condaのドキュメントをご覧ください。

最新のPythonバージョンが欲しかったので、ワークステーションにMiniconda Python 3.7をインストールすることにしました。どのバージョンを選択しても、他のバージョンのPythonを使用して新しい仮想環境をインストールできます。

Condaをインストールするには、PKGファイルをダウンロードし、通常通りダブルクリックして「自分専用にインストール」オプションを選択します。インストールには私のシステムで約158MBの容量が必要でした。

インストール後、ターミナルを開いて設定を確認してください。以下のように表示されているはずです。

  • ホームディレクトリ内のminiconda3ディレクトリ
  • シェルプロンプトが(base)
  • .bash_profileファイルは、Conda 固有の設定の一部を更新します。

基本的なものがインストールされたので、最初のPython仮想環境ができました。Pythonのバージョンチェックを実行すると、 PATHが新しい場所を指していることを確認できます。

  1. ( base ) $ which python
  2. / Users / jfarrell / miniconda3 / bin / python
  3. ( base ) $ python -- version
  4. Python 3.7 . 1

Conda がインストールされたので、次のステップは仮想環境を作成し、Ansible をインストールして実行することです。

Ansibleの仮想環境の作成

Ansible を他の Python プロジェクトから分離したかったので、新しい仮想環境を作成して切り替えました。

  1. ( base ) $ conda create -- name ansible - env -- clone base
  2. ( base ) $ conda activate ansible - env
  3. ( ansible - env ) $ conda env list

最初のコマンドは、Condaライブラリをansible-envという新しい仮想環境にクローンします。このクローンにより、Pythonバージョン3.7とデフォルトのPythonモジュールセットが導入されます。これらのモジュールは必要に応じて追加、削除、またはアップグレードできます。

2番目のコマンドは、シェルのコンテキストをこの新しい環境に変更します。これにより、Pythonとそのモジュールへの正しいパスが設定されます。`conda conda activate ansible-envコマンドを実行すると、シェルプロンプトが変更されることに注意してください。

3 番目のコマンドは必須ではありません。インストールされている Python モジュール、そのバージョン、およびその他のデータを一覧表示します。

Condaの` activateコマンドを使えば、いつでも別の仮想環境に切り替えることができます。このコマンドを実行すると、ベース環境( conda baseに戻ります。

Ansibleをインストールする

Ansibleのインストール方法はいくつかありますが、Condaを使用すると、Ansibleのバージョンと必要な依存関係をすべて1か所にパッケージ化できます。Condaは、すべてを個別に管理し、必要に応じて新しい環境を追加できる柔軟性を備えています(これについては後ほど説明します)。

比較的新しいバージョンの Ansible をインストールするには、次のコマンドを使用します。

  1. ( base ) $ conda activate ansible - env
  2. ( ansible - env ) $ conda install - c conda - forge ansible

AnsibleはCondaのデフォルトチャネルに含まれていないため、 -cオプションを使用して代替チャネルからAnsibleを検索し、インストールします。これでAnsibleはansible-env仮想環境にインストールされ、使用できるようになりました。

Ansibleを使用する

Conda仮想環境をインストールしたら、すぐに使用できます。まず、制御対象のノードに、ワークステーションのSSHキーが適切なユーザーアカウントでインストールされていることを確認してください。

新しいシェルを開き、いくつかの基本的な Ansible コマンドを実行します。

  1. ( base ) $ conda activate ansible - env
  2. ( ansible - env ) $ ansible -- version
  3. ansible 2.8 . 1
  4. config file = None
  5. configured module search path = [ '/Users/jfarrell/.ansible/plugins/modules' , '/usr/share/ansible/plugins/modules' ]
  6. ansible python module location = /Users/ jfarrell / miniconda3 / envs / ansibleTest / lib / python3 . 7 / site - packages / ansible
  7. executable location = /Users/ jfarrell / miniconda3 / envs / ansibleTest / bin / ansible
  8. python version = 3.7 . 1 ( default , Dec 14 2018 , 13 : 28 : 58 ) [ Clang 4.0 . 1 ( tags / RELEASE_401 / final )]
  9. ( ansible - env ) $ ansible all - m ping - u ansible
  10. 192.168 . 99.200 | SUCCESS => {
  11. "ansible_facts" : {
  12. "discovered_interpreter_python" : "/usr/bin/python"
  13. },
  14. "changed" : false ,
  15. "ping" : "pong"
  16. }

Ansible が動作するようになったので、コンソールから出て macOS ワークステーションから使用できるようになりました。

Ansible 開発用の新しい Ansible インスタンスのクローン作成

この部分は完全にオプションです。Ansible を変更するため、または問題のある Python モジュールを安全に使用するために追加の仮想環境が必要な場合にのみ必要です。メインの Ansible 環境を開発用コピーにクローンするには、以下の手順に従います。

  1. ( ansible - env ) $ conda create -- name ansible - dev -- clone ansible - env
  2. ( ansible - env ) $ conda activte ansible - dev
  3. ( ansible - dev ) $

注意すべき問題

Conda の使用中に問題が発生する場合があります。通常は、以下の方法で問題のある環境を削除できます。

  1. $ conda activate base
  2. $ conda remove -- name ansible - dev -- all

解決できないエラーが発生した場合は、通常、 ~/miniconda3/envsにある環境を見つけてディレクトリ全体を削除することで削除できます。ベース環境が破損している場合は、 ~/miniconda3全体を削除し、PKGファイルから再インストールしてください。ただし、 ~/miniconda3/envs必ず残しておくか、Condaツールを使用して環境設定をエクスポートし、後で再作成してください。

sshpassプログラムはmacOSには含まれていません。AnsibleジョブでSSHログインパスワードをAnsibleに入力する必要がある場合にのみ必要です。最新の sshpass ソースコードはSourceForgeで入手できます。

最後に、Condaの基本的なPythonモジュールリストには、作業に必要なPythonモジュールがいくつか不足している可能性があります。モジュールをインストールする必要がある場合は、 conda install packageコマンドを使用することをお勧めしますが、必要に応じてpipを使用することもできます。Condaはインストールされたモジュールを認識します。

結論は

Ansibleは学ぶ価値のある強力な自動化ツールです。Condaはシンプルで効果的なPython仮想環境管理ツールです。

macOS環境でソフトウェアのインストールを分離しておくことは、日々の作業環境の安定性と健全性を維持するための賢明な方法です。Condaは、Pythonバージョンのアップグレード、Ansibleを他のプロジェクトから分離すること、そしてAnsibleを安全に使用することに特に役立ちます。