使用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执行环境,以便在希望在尽量减少变更影响的产品环境等中使用。

广告
将在 10 秒后关闭
bannerAds