L 1-Ansible取付
16148 ワード
1、Ansible紹介
AnsibleはPython言語に基づいて実現される単純軽量レベルの自動化メンテナンス管理ツールです.主に2つの大きなモジュールParamikoとPyYAMLの2つのキーモジュール構築が含まれています.導入アプリケーションの自動化、構成の変更、CIの配布などに使用できます.
AnsibleとSaltstackが最大で異なる場合、Ansibleはホストにクライアントエージェントを配置する必要はありません.デフォルトではsshチャネルを通じてリモート実行またはダウン配布構成を行います.同じ点は、機能が強く、柔軟なシステム管理、ステータス設定を備えており、両方とも豊富なモジュールとAPIを提供しています.
ただし、Ansibleはクライアントを必要としないが、クライアントにはpythonの環境が必要であり、デフォルトでは、Ansibleが認識するときにpythonは、他の名前を持つことはできません.そうしないと、サービス側とクライアントの作業にエラーが発生します.後期に強力なモジュールが実行された場合、pythonクライアントがこのモジュールを実行する必要があります.そうしないと、エラーが発生します.以下に説明します.
プレゼンテーション:
ホスト:
サービス:192.168.59.26|python 2.7|ansible 2.4.2.0
クライアント:192.168.59.195|python 2.6|xxxxxxx
クライアントのpythonが正常に存在する場合:
次に192.168.59.195のpythonをpython_に改名しますbackup:
サービス側が実行した後にエラーを報告する:
解決方法:
+ターゲットホストのpythonインタプリタを指定できます.
ansible_python_interpreter=/usr/bin/env python2.6
-shell実装方法:
+INIプロファイルの実装方法:
192.168.59.195 ansible_python_interpreter=/usr/bin/python2.6
-効果:
+YAML(Playbooks)実装方法:
-効果を実現する:
=Summed up=:ここで確認しましたが、ansibleはクライアントがありませんが、クライアントのpython環境に依存していますが、これは影響しません.pythonは現在標準となっているので、linuxシステムはインストールを最小化してもpython環境があります.ここが読めなくても大丈夫です.ここは始まりです.「ansibleはクライアントがいないがクライアントに依存するpython環境」をしっかり覚えておけば、前の読めなくても忘れても大丈夫です.これは後で問題が発生してどこに問題があるかを知っていればいいのです.
2、Ansible取付
=3つの方法=
ここでcentos 6を例に
1)ソースコードを使用してインストールをコンパイルする
Githubにはソースパケットがありますが、gitがあるかどうかを確認する必要があります.yum install git-yが実行されていなければいいです.
注意:
コンパイルは最も面倒な方法ですが、コンパイルの自由度が非常に高く、ここでコンパイルすると様々なパッケージがない可能性があります.自分で手動でインストールする必要があるか、pythonモジュールが存在しません.デフォルトのコンパイル時に呼び出されるのはシステム環境変数の/usr/bin/env pythonバージョンです.pythonモジュールをインストールするにも対応するpythonをインストールする必要があります.もし間違いがあったら、必ず新聞を読み間違えた数行、特に最後から10行をマスターしなければならない.基本的には彼が何が欠けているのか、あなたが何を着ているのかのリズムが速い.
2)yum、apt等の倉庫での設置
まずyum取付ハンドルについて、centos 6を例にとります
*まずepelソースをインストールする必要があります.このソースは公式にインストールしても国内にインストールしてもいいです.国内のアリ雲のepelソースなどの速度は非常に客観的です.
あるいは公式の住所に行って最新のansibleバージョンをダウンロードして、住所:http://releases.ansible.com/ansible/rpm/release/(これはあまり述べません)
*ansibleをインストールします.ansible 2.4ではpythonバージョンがpython 2.6以降のpythonバージョンが必要です.
システムのpythonバージョンを確認します.
システムにepelソースがあるかどうかを確認します.
epelのrpmパッケージをインストールしている場合は、コマンドを使用して表示できます.
rpmパッケージがインストールされていない場合はyum makecacheで確認できます(ここでは方法が多いです)
インストールansible:
ubuntuのインストール:
ソフトウェア・ウェアハウスのインストールを使用すると、特に依存関係を大幅に省くことができます.
3)pythonを使用したpypiウェアハウスのインストール
この方法は自信のあるネットワークが必要で、デフォルトのpypi倉庫は海外で、もちろんソフトウェアも最新です.一般的には、aliyun、豆弁、清華、中科院などのオープンソースミラーステーションがあるなど、国内のpypiミラー倉庫に変更することを提案しています.国内のオープンソースミラーステーションまたは指定されたオープンソースミラーステーションを使用する方法も簡単です.
一時的な有効化:
永続的な有効化(linuxを主とする):
ユーザーのホームディレクトリ(一般的にroot)で、ディレクトリを作成します.
ファイルを作成
そしてpipインストールを呼び出すとすぐに.
次にpipを使用してansibleをインストールします
インストールプロセスは、コンパイル後の2つの方法よりも簡単で、迅速な依存性を自動的に解決します.
pipを使用してインストールすると、エラーが発生する可能性があります.以下のエラーであれば、解決策を提供します.
(1)まず、最後の行を見ると、cffi=1.1.0バージョンというソフトウェアが見つかりません.
(2)ない以上、インストールします(ここでは1.7.0をインストールしました):
インストール手順が間違っていますか?
WTF、焦らないで、問題があったら必ずログを見てください.
以上のヒント:unable to execute gcc:No such file or directory
gccディレクトリがありませんが、gccはインストールされていませんか?
この疑問を持ってyum install gcc-yをインストールしてみましょうやはりインストールしていません
(3)gccを取り付けてから実行する
cffiのインストールに成功しました.では、依存パッケージを解決しました.次にansibleをインストールします.
ここで待ってください.前にpynaclのパッケージもインストールに失敗したわけではありません.では、まずインストールします.
ansibleのインストールに成功しました.
ここで説明すると、pypi倉庫のソフトウェアには多くのバージョンがあり、バージョンの互換性がないため、エラーが発生することが多い.
pipインストールを使用する場合、政府は開発バージョンをインストールする方法も提供しています.
参照先:
http://docs.ansible.com/ansible/latest/
AnsibleはPython言語に基づいて実現される単純軽量レベルの自動化メンテナンス管理ツールです.主に2つの大きなモジュールParamikoとPyYAMLの2つのキーモジュール構築が含まれています.導入アプリケーションの自動化、構成の変更、CIの配布などに使用できます.
AnsibleとSaltstackが最大で異なる場合、Ansibleはホストにクライアントエージェントを配置する必要はありません.デフォルトではsshチャネルを通じてリモート実行またはダウン配布構成を行います.同じ点は、機能が強く、柔軟なシステム管理、ステータス設定を備えており、両方とも豊富なモジュールとAPIを提供しています.
ただし、Ansibleはクライアントを必要としないが、クライアントにはpythonの環境が必要であり、デフォルトでは、Ansibleが認識するときにpythonは、他の名前を持つことはできません.そうしないと、サービス側とクライアントの作業にエラーが発生します.後期に強力なモジュールが実行された場合、pythonクライアントがこのモジュールを実行する必要があります.そうしないと、エラーが発生します.以下に説明します.
プレゼンテーション:
ホスト:
サービス:192.168.59.26|python 2.7|ansible 2.4.2.0
クライアント:192.168.59.195|python 2.6|xxxxxxx
クライアントのpythonが正常に存在する場合:
# ansible 192.168.59.195 -m ping
192.168.59.195 | SUCCESS => {
"changed": false,
"ping": "pong"
}
次に192.168.59.195のpythonをpython_に改名しますbackup:
# whereis python
python: /usr/bin/python2.6 /usr/bin/python /usr/lib/python2.6 /usr/lib64/python2.6 /usr/include/python2.6 /usr/share/man/man1/python.1.gz
# cd /usr/bin/
# mv python python_bakcup
# python
-bash: python: command not found
サービス側が実行した後にエラーを報告する:
# ansible 192.168.59.195 -m ping
192.168.59.195 | FAILED! => {
"changed": false,
"module_stderr": "Shared connection to 192.168.59.195 closed.\r
",
"module_stdout": "/bin/sh: /usr/bin/python: \r
",
"msg": "MODULE FAILURE",
"rc": 0
}
解決方法:
+ターゲットホストのpythonインタプリタを指定できます.
ansible_python_interpreter=/usr/bin/env python2.6
-shell実装方法:
# ansible 192.168.59.195 -m ping -e "ansible_python_interpreter=/usr/bin/python2.6"
192.168.59.195 | SUCCESS => {
"changed": false,
"ping": "pong"
}
+INIプロファイルの実装方法:
192.168.59.195 ansible_python_interpreter=/usr/bin/python2.6
-効果:
# ansible 192.168.59.195 -m ping
192.168.59.195 | SUCCESS => {
"changed": false,
"ping": "pong"
}
+YAML(Playbooks)実装方法:
---
- hosts: 192.168.59.195
remote_user: root
vars:
ansible_python_interpreter: /usr/bin/env python2.6
tasks:
- name: Ping hosts
ping:
-効果を実現する:
# ansible-playbook basice.yml
PLAY [192.168.59.195] ******************************************************************************************************************************************
TASK [Gathering Facts] *****************************************************************************************************************************************
ok: [192.168.59.195]
TASK [Ping hosts] **********************************************************************************************************************************************
ok: [192.168.59.195]
PLAY RECAP *****************************************************************************************************************************************************
192.168.59.195 : ok=2 changed=0 unreachable=0 failed=0
=Summed up=:ここで確認しましたが、ansibleはクライアントがありませんが、クライアントのpython環境に依存していますが、これは影響しません.pythonは現在標準となっているので、linuxシステムはインストールを最小化してもpython環境があります.ここが読めなくても大丈夫です.ここは始まりです.「ansibleはクライアントがいないがクライアントに依存するpython環境」をしっかり覚えておけば、前の読めなくても忘れても大丈夫です.これは後で問題が発生してどこに問題があるかを知っていればいいのです.
2、Ansible取付
=3つの方法=
ここでcentos 6を例に
1)ソースコードを使用してインストールをコンパイルする
Githubにはソースパケットがありますが、gitがあるかどうかを確認する必要があります.yum install git-yが実行されていなければいいです.
# git clone https://github.com/ansible/ansible.git
# cd ansible/
# make rpm
#
Checking for unpackaged file(s): /usr/lib/rpm/check-files /root/ansible/rpm-build/BUILDROOT/ansible-2.5.0-100.git201712201153.b3ff93e.devel.el6.x86_64
Wrote: /root/ansible/rpm-build/ansible-2.5.0-100.git201712201153.b3ff93e.devel.el6.src.rpm
Wrote: /root/ansible/rpm-build/ansible-2.5.0-100.git201712201153.b3ff93e.devel.el6.noarch.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.RH4zrH
+ umask 022
+ cd /root/ansible/rpm-build
+ cd ansible-2.5.0
+ rm -rf /root/ansible/rpm-build/BUILDROOT/ansible-2.5.0-100.git201712201153.b3ff93e.devel.el6.x86_64
+ exit 0
#############################################
Ansible RPM is built:
rpm-build/ansible-2.5.0-100.git201712201153.b3ff93e.devel.el6.noarch.rpm
#############################################
# echo $?
0
# rpm -Uvh ./rpm-build/ansible-2.5.0-100.git201712201153.b3ff93e.devel.el6.noarch.rpm
# rpm -qa | grep ansible
ansible-2.5.0-100.git201712201153.b3ff93e.devel.el6.noarch
注意:
コンパイルは最も面倒な方法ですが、コンパイルの自由度が非常に高く、ここでコンパイルすると様々なパッケージがない可能性があります.自分で手動でインストールする必要があるか、pythonモジュールが存在しません.デフォルトのコンパイル時に呼び出されるのはシステム環境変数の/usr/bin/env pythonバージョンです.pythonモジュールをインストールするにも対応するpythonをインストールする必要があります.もし間違いがあったら、必ず新聞を読み間違えた数行、特に最後から10行をマスターしなければならない.基本的には彼が何が欠けているのか、あなたが何を着ているのかのリズムが速い.
2)yum、apt等の倉庫での設置
まずyum取付ハンドルについて、centos 6を例にとります
*まずepelソースをインストールする必要があります.このソースは公式にインストールしても国内にインストールしてもいいです.国内のアリ雲のepelソースなどの速度は非常に客観的です.
あるいは公式の住所に行って最新のansibleバージョンをダウンロードして、住所:http://releases.ansible.com/ansible/rpm/release/(これはあまり述べません)
*ansibleをインストールします.ansible 2.4ではpythonバージョンがpython 2.6以降のpythonバージョンが必要です.
システムのpythonバージョンを確認します.
# python --version
Python 2.6.6
運が良かった、ちょうど2.6システムにepelソースがあるかどうかを確認します.
epelのrpmパッケージをインストールしている場合は、コマンドを使用して表示できます.
#rpm -qa | grep epel
rpmパッケージがインストールされていない場合はyum makecacheで確認できます(ここでは方法が多いです)
# yum makecache
:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base | 3.7 kB 00:00
epel | 4.7 kB 00:00
extras | 3.4 kB 00:00
updates | 3.4 kB 00:00
インストールansible:
# yum install ansible -y
ubuntuのインストール:
$ 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
ソフトウェア・ウェアハウスのインストールを使用すると、特に依存関係を大幅に省くことができます.
3)pythonを使用したpypiウェアハウスのインストール
この方法は自信のあるネットワークが必要で、デフォルトのpypi倉庫は海外で、もちろんソフトウェアも最新です.一般的には、aliyun、豆弁、清華、中科院などのオープンソースミラーステーションがあるなど、国内のpypiミラー倉庫に変更することを提案しています.国内のオープンソースミラーステーションまたは指定されたオープンソースミラーステーションを使用する方法も簡単です.
一時的な有効化:
pip install -i https://pypi.douban.com/simple
永続的な有効化(linuxを主とする):
ユーザーのホームディレクトリ(一般的にroot)で、ディレクトリを作成します.
mkdir ~/.pip/ -p
ファイルを作成
echo "[global]" > ~/.pip/pip.conf
echo "https://pypi.douban.com/simple/ " >> ~/pip/pip.conf
そしてpipインストールを呼び出すとすぐに.
次にpipを使用してansibleをインストールします
# pip install ansible
インストールプロセスは、コンパイル後の2つの方法よりも簡単で、迅速な依存性を自動的に解決します.
pipを使用してインストールすると、エラーが発生する可能性があります.以下のエラーであれば、解決策を提供します.
/latest/security.html#insecureplatformwarning.
InsecurePlatformWarning
Downloading PyNaCl-1.0.1.tar.gz (2.7MB)
100% |████████████████████████████████| 2.7MB 230kB/s
Complete output from command python setup.py egg_info:
Couldn't find index page for 'cffi' (maybe misspelled?)
No local packages or download links found for cffi>=1.1.0
Traceback (most recent call last):
File "", line 20, in
File "/tmp/pip-build-ABovhP/pynacl/setup.py", line 259, in
"Programming Language :: Python :: 3.5",
File "/usr/lib64/python2.6/distutils/core.py", line 113, in setup
_setup_distribution = dist = klass(attrs)
File "/usr/lib/python2.6/site-packages/setuptools/dist.py", line 221, in __init__
self.fetch_build_eggs(attrs.pop('setup_requires'))
File "/usr/lib/python2.6/site-packages/setuptools/dist.py", line 245, in fetch_build_eggs
parse_requirements(requires), installer=self.fetch_build_egg
File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 538, in resolve
dist = best[req.key] = env.best_match(req, self, installer)
File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 780, in best_match
return self.obtain(req, installer) # try and download/install
File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 792, in obtain
return installer(requirement)
File "/usr/lib/python2.6/site-packages/setuptools/dist.py", line 293, in fetch_build_egg
return cmd.easy_install(req)
File "/usr/lib/python2.6/site-packages/setuptools/command/easy_install.py", line 466, in easy_install
raise DistutilsError(msg)
distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse('cffi>=1.1.0')
(1)まず、最後の行を見ると、cffi=1.1.0バージョンというソフトウェアが見つかりません.
(2)ない以上、インストールします(ここでは1.7.0をインストールしました):
# pip install cffi==1.1.0
インストール手順が間違っていますか?
InsecurePlatformWarning
Downloading cffi-1.1.0.tar.gz (323kB)
100% |████████████████████████████████| 327kB 324kB/s
Complete output from command python setup.py egg_info:
unable to execute gcc: No such file or directory
unable to execute gcc: No such file or directory
No working compiler found, or bogus compiler options
passed to the compiler from Python's distutils module.
See the error messages above.
(If they are about -mno-fused-madd and you are on OS/X 10.8,
see http://stackoverflow.com/questions/22313407/ .)
compiling '_configtest.c':
__thread int some_threadlocal_variable_42;
compiling '_configtest.c':
int some_regular_variable_42;
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-7EP_ql/cffi
WTF、焦らないで、問題があったら必ずログを見てください.
以上のヒント:unable to execute gcc:No such file or directory
gccディレクトリがありませんが、gccはインストールされていませんか?
この疑問を持ってyum install gcc-yをインストールしてみましょうやはりインストールしていません
(3)gccを取り付けてから実行する
# pip install cffi==1.1.0
You are using pip version 7.1.0, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting cffi==1.1.0
/usr/lib/python2.6/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
InsecurePlatformWarning
Using cached cffi-1.1.0.tar.gz
Collecting pycparser (from cffi==1.1.0)
Downloading pycparser-2.18.tar.gz (245kB)
100% |████████████████████████████████| 249kB 1.3MB/s
Installing collected packages: pycparser, cffi
Running setup.py install for pycparser
Running setup.py install for cffi
Successfully installed cffi-1.1.0 pycparser-2.18
cffiのインストールに成功しました.では、依存パッケージを解決しました.次にansibleをインストールします.
ここで待ってください.前にpynaclのパッケージもインストールに失敗したわけではありません.では、まずインストールします.
# pip install pynacl==1.0.1
You are using pip version 7.1.0, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting pynacl==1.0.1
/usr/lib/python2.6/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
InsecurePlatformWarning
Using cached PyNaCl-1.0.1.tar.gz
Collecting six (from pynacl==1.0.1)
Downloading six-1.11.0-py2.py3-none-any.whl
Requirement already satisfied (use --upgrade to upgrade): cffi>=1.1.0 in /usr/lib64/python2.6/site-packages (from pynacl==1.0.1)
Requirement already satisfied (use --upgrade to upgrade): pycparser in /usr/lib/python2.6/site-packages (from cffi>=1.1.0->pynacl==1.0.1)
Installing collected packages: six, pynacl
Running setup.py install for pynacl
Successfully installed pynacl-1.0.1 six-1.11.0
ansibleのインストールに成功しました.
# pip install ansible
You are using pip version 7.1.0, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting ansible
/usr/lib/python2.6/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
InsecurePlatformWarning
Using cached ansible-2.4.2.0.tar.gz
Requirement already satisfied (use --upgrade to upgrade): jinja2 in /usr/lib/python2.6/site-packages (from ansible)
Requirement already satisfied (use --upgrade to upgrade): PyYAML in /usr/lib64/python2.6/site-packages (from ansible)
Collecting paramiko (from ansible)
Using cached paramiko-2.4.0-py2.py3-none-any.whl
Requirement already satisfied (use --upgrade to upgrade): cryptography in /usr/lib64/python2.6/site-packages (from ansible)
Requirement already satisfied (use --upgrade to upgrade): setuptools in /usr/lib/python2.6/site-packages (from ansible)
Requirement already satisfied (use --upgrade to upgrade): MarkupSafe>=0.23 in /usr/lib64/python2.6/site-packages (from jinja2->ansible)
Collecting bcrypt>=3.1.3 (from paramiko->ansible)
Using cached bcrypt-3.1.4.tar.gz
Collecting pyasn1>=0.1.7 (from paramiko->ansible)
Using cached pyasn1-0.4.2-py2.py3-none-any.whl
Requirement already satisfied (use --upgrade to upgrade): pynacl>=1.0.1 in /usr/lib64/python2.6/site-packages (from paramiko->ansible)
Requirement already satisfied (use --upgrade to upgrade): idna>=2.1 in /usr/lib/python2.6/site-packages (from cryptography->ansible)
Requirement already satisfied (use --upgrade to upgrade): asn1crypto>=0.21.0 in /usr/lib/python2.6/site-packages (from cryptography->ansible)
Requirement already satisfied (use --upgrade to upgrade): six>=1.4.1 in /usr/lib/python2.6/site-packages (from cryptography->ansible)
Requirement already satisfied (use --upgrade to upgrade): enum34 in /usr/lib/python2.6/site-packages (from cryptography->ansible)
Requirement already satisfied (use --upgrade to upgrade): ipaddress in /usr/lib/python2.6/site-packages (from cryptography->ansible)
Requirement already satisfied (use --upgrade to upgrade): cffi>=1.1 in /usr/lib64/python2.6/site-packages (from bcrypt>=3.1.3->paramiko->ansible)
Requirement already satisfied (use --upgrade to upgrade): pycparser in /usr/lib/python2.6/site-packages (from cffi>=1.1->bcrypt>=3.1.3->paramiko->ansible)
Installing collected packages: bcrypt, pyasn1, paramiko, ansible
Running setup.py install for bcrypt
Running setup.py install for ansible
Successfully installed ansible-2.4.2.0 bcrypt-3.1.4 paramiko-2.4.0 pyasn1-0.4.2
ここで説明すると、pypi倉庫のソフトウェアには多くのバージョンがあり、バージョンの互換性がないため、エラーが発生することが多い.
pipインストールを使用する場合、政府は開発バージョンをインストールする方法も提供しています.
pip install git+https://github.com/ansible/ansible.git@devel
参照先:
http://docs.ansible.com/ansible/latest/