質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

proxy

proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

Q&A

解決済

1回答

3470閲覧

centos8でansibleを使いproxyを構築する。

momo2

総合スコア21

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

proxy

proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

0グッド

0クリップ

投稿2020/06/05 15:49

編集2020/06/07 02:29

centos8にproxy構築する途中、rolesを使用しています。

しかし、途中、以下のrolesを使うのですが、

roles: - geerlingguy.repo-epel - geerlingguy.pip

このようにpython-pipのパッケージがインストール失敗してしまいます。

FAILED! => {"changed": false, "failures": ["No package python-pip available."], "msg": "Failed to install some of the specified packages"

同じようにrolesをお使いの方、もしくわ、解決方法について分かる方、ご教授いただければ幸いです。

その他の方法もあればお教え下さい。
宜しくお願い致します。

以下、回答コメントに置きまして、参考コードとして書き込みしておきます。

- hosts: google gather_facts: True become: yes tasks: - set_fact: ansible_pkg_mgr: dnf when: - ansible_distribution == "CentOS" - ansible_distribution_major_version == "8" roles: - geerlingguy.repo-epel - geerlingguy.pip

- hosts: google become: yes tasks: - name: task yum: name: python-pip

- hosts: google become: yes tasks: # python3 のインストール - name: task yum: name: python3-pip

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

下記のロールをお使いでしたら、python3の場合は、defaultsのpip_packagepython3-pip変えてはいかがでしょうか?

https://github.com/geerlingguy/ansible-role-pip

投稿2020/06/05 16:12

comefigo

総合スコア1051

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

momo2

2020/06/05 16:23

お返事ありがとうございます。 pip_package: python3-pip pip_executable: pip 又は、 pip_package: python3-pip pip_executable: pip3 両方共に試行してみましたが、同じエラーを吐いていました。 ありがとうございます。
comefigo

2020/06/05 17:21

ansibleを使わずにOSのパッケージマネージャーからpython-pipを検索してみてはいかがでしょうか?もしかしたらそもそもリポジトリにないのか。または異なる名前のパッケージ名になっている可能性もあります。 centos8なら dnf list | grep pip とかかな?
momo2

2020/06/06 03:47

ご連絡ありがとうございます。 yum list installed にてインストールされているパッケージを見てみました。 以下のように python-pip が見当たりませんでした。 python-srpm-macros.noarch python3-asn1crypto.noarch python3-audit.x86_64 python3-bind.noarch python3-cairo.x86_64 python3-cffi.x86_64 python3-configobj.noarch python3-cryptography.x86_64 python3-dateutil.noarch python3-dbus.x86_64 python3-decorator.noarch python3-dmidecode.x86_64 python3-dnf.noarch python3-dnf-plugin-spacewalk.noarch python3-dnf-plugins-core.noarch python3-firewall.noarch python3-gobject.x86_64 python3-gobject-base.x86_64 python3-gpg.x86_64 python3-hawkey.x86_64 python3-hwdata.noarch python3-idna.noarch python3-libcomps.x86_64 python3-libdnf.x86_64 python3-librepo.x86_64 python3-libs.x86_64 python3-libselinux.x86_64 python3-libsemanage.x86_64 python3-libstoragemgmt.noarch python3-libstoragemgmt-clibs.x86_64 python3-libxml2.x86_64 python3-linux-procfs.noarch python3-netifaces.x86_64 python3-newt.x86_64 python3-perf.x86_64 python3-pip-wheel.noarch python3-ply.noarch python3-policycoreutils.noarch python3-pyOpenSSL.noarch python3-pycparser.noarch python3-pyudev.noarch python3-pyyaml.x86_64 python3-rhn-client-tools.x86_64 python3-rhnlib.noarch python3-rpm.x86_64 python3-rpm-macros.noarch python3-schedutils.x86_64 python3-setools.x86_64 python3-setuptools-wheel.noarch python3-six.noarch python3-slip.noarch python3-slip-dbus.noarch python3-sssdconfig.noarch python3-syspurpose.x86_64 python3-systemd.x86_64 python3-unbound.x86_64 また、dnf list | grep pip こちらも試しました。 以下のようになっていました。 libpipeline.x86_64 platform-python-pip.noarch python3-pip-wheel.noarch libpipeline.i686 pipewire.i686 pipewire.x86_64 pipewire-devel.i686 pipewire-devel.x86_64 pipewire-doc.x86_64 pipewire-libs.i686 pipewire-libs.x86_64 pipewire-utils.x86_64 python2-pip.noarch python2-pip-wheel.noarch python3-pip.noarch この2つ辺りが、該当しているのでしょうか? 調べましたが、分かりませんでした。 python2-pip.noarch python3-pip.noarch
comefigo

2020/06/06 04:15

yumも出力していただいてありがとうございます。 結果から推測するとyumが参照しているリポジトリにはなく、dnfが参照しているリポジトリにはあるようなので、packageモジュールはデフォルトでyumを使用しているかもしれないですね。 タスクに以下を追加し、Ansibleが判定しているパッケージマネージャーはなにかを確認しましょう。 --- - debug: var=ansible_facts.ansible_pkg_mgr --- もし、上記の結果がyumだった場合は、変数にansible_pkg_mgr: dnfと設定しましょう。 ただし、dnfに固定してしまいますとpackageモジュールの良さ(ディストリビューション問わずパッケージマネージャーを扱えるとこおr)を打ち消しちゃいます。なので、上記のansible_pkg_mgrをset_factで定義し、whenにosがcentos8であることを条件に追加すると良いでしょう。 あとcentos8しか扱わないのであれば無理にこのroleを使う必要もない気がします。
momo2

2020/06/06 05:25

インラインにて失礼します。 ① >結果から推測するとyumが参照しているリポジトリにはなく、dnfが参照しているリポジトリにはあるようなので、packageモジュールはデフォルトでyumを使用してい>るかもしれないですね。 >タスクに以下を追加し、Ansibleが判定しているパッケージマネージャーはなにかを確認しましょう。 --- - debug: var=ansible_facts.ansible_pkg_mgr --- 教えて頂いた上記をtaskに入れて、実行してみました。 結果として、以下のようになりました。 "ansible_facts.ansible_pkg_mgr": "VARIABLE IS NOT DEFINED!" デフォルトの定義がされていないということなので、ここで、"dnf"を定義してみます。 --- tasks: - set_fact: ansible_facts: ansible_pkg_mgr: dnf roles: - geerlingguy.repo-epel - geerlingguy.pip --- "No package python-pip available." ですが、エラーが表示されました。 roleの直前に変数 "dnf" を入れました。 入れ方が間違っているのでしょうか? ② >ただし、dnfに固定してしまいますとpackageモジュールの良さ(ディストリビューション問わずパッケージマネージャーを扱えるとこおr)を打ち消しちゃいます。>なので、上記のansible_pkg_mgrをset_factで定義し、whenにosがcentos8であることを条件に追加すると良いでしょう。 今、作成している yml ファイルにてcentos7で実行してきました。 実行ファイル毎にcentos7,centos8バージョンとして使い分けをしようかと考えていました。 ③ >あとcentos8しか扱わないのであれば無理にこのroleを使う必要もない気がします。 この方法しかわからない為、このroleを使用しています。 他に参考出来るものがあれば教えて頂きたいです。
comefigo

2020/06/06 06:01 編集

> "ansible_facts.ansible_pkg_mgr": "VARIABLE IS NOT DEFINED!" playbookのgather_facts: Trueにしてください。Falseになっているとホストへ初回接続時にそのホストの情報(OSのバージョン、IPなどなど)を取得しないので、それらの変数に値も入ってきません。 取得できる変数はこんな感じです。 https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variables-discovered-from-systems-facts > ansible_pkg_mgr: dnf を指定する場合は、 tasks:  - set_fact:(インデントは半角空白で!)    ansible_pkg_mgr: dnf > 実行ファイル毎にcentos7,centos8バージョンとして使い分けをしようかと考えていました。 であれば、set_factでwhen条件を追加したほうがいいですね。 > この方法しかわからない為、このroleを使用しています パッケージマネージャーからpipを導入したいのであれば、yumモジュールかdnfモジュール(CentOS8のみ)を使うのもアリかと思います。 https://docs.ansible.com/ansible/latest/modules/yum_module.html https://docs.ansible.com/ansible/latest/modules/dnf_module.html > yum list installed ちなみに前述のyum list installedの結果を添付されていましたが、これだとインストール済みのパッケージ一覧が表示されるので、yum search pipの結果はいかがでしょうか?
momo2

2020/06/06 08:39 編集

ご指導いただきありがとうございます。 (回答コメントからですと、インデントがうまく表示されません、申し訳ありません。質問欄に別途表記しておきます。) ① 以下のような code にしました。 --- - hosts: google gather_facts: True become: yes tasks: - set_fact: ansible_pkg_mgr: dnf when: - ansible_distribution == "CentOS" - ansible_distribution_major_version == "8" roles: - geerlingguy.repo-epel - geerlingguy.pip --- ["No package python-pip available."], "msg": "Failed to install some of the specified packages" まだ上記のようなエラーが生じています。 ② >yumモジュールかdnfモジュール(CentOS8のみ)を使うのもアリかと思います。 >https://docs.ansible.com/ansible/latest/modules/yum_module.html >https://docs.ansible.com/ansible/latest/modules/dnf_module.html --- - hosts: google become: yes tasks: - name: task yum: name: python-pip --- yumモジュールからですが、こういうイメージでしょうか? ③ >yum search pipの結果はいかがでしょうか? このコマンドを打ちますと、以下のように返ってきました。 ========================================== Name & Summary Matched: pip =========================================== python3-pip-wheel.noarch : The pip wheel python2-pip-wheel.noarch : The pip wheel python3-pip-wheel.noarch : The pip wheel pdns-backend-pipe.x86_64 : Pipe backend for pdns libpipeline.x86_64 : A pipeline manipulation library libpipeline.i686 : A pipeline manipulation library libpipeline.x86_64 : A pipeline manipulation library pipewire-libs.i686 : Libraries for PipeWire clients pipewire-libs.x86_64 : Libraries for PipeWire clients pipewire-utils.x86_64 : PipeWire media server utilities pipewire-doc.x86_64 : PipeWire media server documentation globus-xio-pipe-driver.x86_64 : Grid Community Toolkit - Globus Pipe Driver pipewire-devel.i686 : Headers and libraries for PipeWire client development pipewire-devel.x86_64 : Headers and libraries for PipeWire client development perl-IO-Pipely.noarch : Portably create pipe() or pipe-like handles, one way or another globus-xio-pipe-driver-devel.x86_64 : Grid Community Toolkit - Globus Pipe Driver Development Files =============================================== Name Matched: pip ================================================ aespipe.x86_64 : AES-based encryption tool for tar/cpio and loop-aes imagemore pipewire.i686 : Media Sharing Server pipewire.x86_64 : Media Sharing Server python3-pip.noarch : A tool for installing and managing Python3 packages python2-pip.noarch : A tool for installing and managing Python 2 packages python3-pip.noarch : A tool for installing and managing Python3 packages python3-apipkg.noarch : A Python namespace control and lazy-import mechanism platform-python-pip.noarch : A tool for installing and managing Python3 packages platform-python-pip.noarch : A tool for installing and managing Python3 packages ============================================== Summary Matched: pip ============================================== globus-xio-popen-driver.x86_64 : Grid Community Toolkit - Globus XIO Pipe Open Driver pv.x86_64 : A tool for monitoring the progress of data through a pipeline globus-xio-popen-driver-devel.x86_64 : Grid Community Toolkit - Globus XIO Pipe Open Driver Development Files このコマンドからも python3-pip.noarch : A tool for installing and managing Python3 packages python2-pip.noarch : A tool for installing and managing Python 2 packages python2-pipもpytohn3-pipも入っているのですね。 有難うございます。
comefigo

2020/06/06 08:47

> ① コードはいい感じですね。 リポジトリをdnfにした場合は、前述のdnf list | grep pipした結果にありますようにpython-pipはリポジトリにはないので、pip_packageにpython2-pipかpython3-pipを指定してください。pip_executableもあわせて変更してください。 > ②と③ コードはそんな感じですね。 こちらも①の回答と同様にyumリポジトリに該当するパッケージを指定しなければならないので、python3-pipかpython2-pipを指定してください。
momo2

2020/06/06 09:16

① dnfにして 以下のように指定してありますが、 pip_package: python3-pip pip_executable: pip3 やはり下記のようなエラーが発生してしまいます。 FAILED! => {"changed": false, "failures": ["No package python-pip available."], "msg": "Failed to install some of the specified packages", "rc": 1, "results": []} 何が原因か調べる方法はありますでしょうか? ②、③ 分かりました。 有難うございます。 ①の方法で、まずは進めたいと思います!
comefigo

2020/06/06 10:08

pip_package: python3-pipと指定しているのにもかかわらず、python-pipを取得しようとしていますね・・・ defaults/main.ymlのpip_packageを書き替えていますでしょうか?
momo2

2020/06/06 10:27

ansible-role-pip/defaults/main.yml --- pip_package: python3-pip pip_executable: pip3 pip_install_packages: [] --- 上記のように書き換えています。
comefigo

2020/06/06 15:06

それでもpython-pipを取得しようとしてるんですね・・・
momo2

2020/06/06 17:35

はい、、、 そこで、ちょっと試しに以下のようにやってみましたが、それもダメでした。 --- [all:vars] ansible_python_interpreter=/usr/bin/python3 --- https://docs.ansible.com/ansible/latest/reference_appendices/python_3_support.html インベントリホストファイルに上記のようにpython3を使うようにしましたが、エラーが出ました。 FAILED! => {"ansible_facts": {}, "changed": false, "failed_modules": {"setup": {"failed": true, "module_stderr": "Shared connection to ---.---.---.--- closed.\r\n", "module_stdout": "/bin/sh: /usr/bin/python3: No such file or directory\r\n", "msg": "The module failed to execute correctly, you probably need to set the interpreter.\nSee stdout/stderr for the exact error", "rc": 127}}, "msg": "The following modules failed to execute: setup\n"}
comefigo

2020/06/06 17:57

/usr/bin/にpython3がありますでしょうか?
momo2

2020/06/07 02:37 編集

--- geerlingguy.repo-epel geerlingguy.pip --- 上記のrole入れる前に 以下のようなコードを書いて /usr/bin/にpython3 に配置させました。 --- - hosts: google become: yes tasks: # python3 のインストール - name: task yum: name: python3-pip --- どうにかpython-pipから離れようとしていましたが、少し、違う方向にずれてきましたね、すいません。
comefigo

2020/06/07 08:59

ご存知かと思いますが、ansible_python_interpreterの設定はAnsibleの実行時(実行元)に使用するpythonを指定するものなので、操作対象(CentOS8)で使用するpythonを指定するものではありません。 操作先のpythonを指定したいのであれば、こちらですね。 https://qiita.com/hiroyuki_onodera/items/398c1331b157e5b4b588
momo2

2020/06/14 10:01

先週からご指導ありがとうございます。 弄り倒していましたら、出来ました。 ですが、色々弄っていたため、何が解決に至ったのか分からないため、 再確認しております。 この度はありがとうございます。
comefigo

2020/06/14 14:58

ひとまず解決されたならよかったです。 いろいろと試しているうちに環境が汚れちゃったりすることもあるので、クリーンな環境で一歩ずつ確かめてみるのもいいかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問