使用Ansible的两种便携方式
首先
要使用Ansible进行服务器配置管理,需要在可以通过SSH访问到的机器上设置环境。
但是,也许会出现以下情况:
-
- インターネットに接続できない
- 勝手に新規ソフトウェア入れられない
有时候我想在这种情况下,无需安装即可使用Ansible。换句话说,我想要做以下这些事情。
|→プロダクト環境
| ★この環境は中々いじれない。。
┌─────────────┐ | ┌─────────────┐ ┌───────────────┐
|1 | | | 2 | | 3 |
| |──────| |──────| |
| | | | |ssh | |
└─────────────┘ | └─────────────┘ └───────────────┘
ローカルマシン | Ansibleサーバ 構成対象サーバ
→Ansibleサーバーにはディレクトリ転送するだけで、ansible使いたい!
因此,我将介绍两种方法,只需进行一些本地操作,然后进行目录传输即可执行Ansible。
※在这里假设本地机器可以连接到互联网并自由安装软件。
1. 从 git 下载源代码的方法.
这个可能有很多人知道,因为它在Ansible的文档中也有提到。
在本地计算机上的步骤
首先执行git clone。
git clone https://github.com/ansible/ansible.git --recursive
可以这样,你可以创建一个Ansible目录。
$ ls
ansible
需要更新子模块。
※如果不做这个会被批评。
cd ansible
git submodule update --init lib/ansible/modules/core
git submodule update --init lib/ansible/modules/extras
cd .. #元のディレクトリに戻っておく
以上就是准备工作的完成。
将ansible目录(和playbook)传输到Ansible服务器上。
scp -r ansible [Ansibleサーバ]:
使用Ansible服务器的方法
cd ansible
source hacking/env-setup
用这个,就可以执行ansible命令了。
这个方法的使用条件
似乎只有在下列条件下才会运作。
-
- Python2.6 or Python2.7 がインストール済み
- pip paramiko PyYAML Jinja2 httplib2 six が導入済み
看起来第二个有点难度高,是吧。。
2. 將PyEnv環境進行轉移。
通过将由PyEnv创建的目录整体传输,可以使用稍微强制的方法来进行环境设置。
在本地机器上的步骤
首先,您需要在执行Ansible的目录中创建一个与Ansible服务器的路径相同的文件夹。
如果将Ansible服务器的用户名设置为opuser,并将Ansible执行目录ansible放置在/home/opuser目录中。
# useradd opuser
# su - opuser
$ echo $HOME # => /home/opuser
$ mkdir -p /home/opuser/ansible
使用Ansible在目录中搭建Pyenv环境。
cd /home/opuser/ansible
git clone https://github.com/yyuu/pyenv.git pyenv
touch ./pyenv.env
echo 'export PYENV_ROOT="/home/opuser/ansible/pyenv"' >> ./pyenv.env
echo 'if [ -d "${PYENV_ROOT}" ]; then' >> ./pyenv.env
echo ' export PATH=${PYENV_ROOT}/bin:$PATH' >> ./pyenv.env
echo ' eval "$(pyenv init -)"' >> ./pyenv.env
echo 'fi' >> ./pyenv.env
source ./pyenv.env
cd $PYENV_ROOT/plugins
git clone https://github.com/yyuu/pyenv-virtualenv.git
首先,在Pyenv环境下安装Python。
然后,安装Ansible。
如果还有其他要安装的软件包,请安装。
版本随意。
cd /home/opuser/ansible
pyenv install 2.7.12
pyenv local 2.7.12
pip install ansible
将Ansible目录传输。
scp -r /home/opuser/ansible opuser@[Ansibleサーバ]:
Ansible 服务器的用法
我会加载Pyenv的环境变量。
cd ~/ansible
source pyenv.env
ansible --version #=> ansibleが利用できるようになっているはずです。
以下是动作条件。
-
- ローカルマシンとAnsibleサーバでCPUアーキが一緒であること
-
- ※例えばAnsibleサーバがx86_64ならローカルマシンもx86_64にする
- pyenvのパスがローカルマシンとAnsibleサーバーで同一であること
总结
我们提供了一种方法来创建一个可移植的Ansible执行环境,以便在希望在尽量减少变更影响的产品环境等中使用。