Ansibleを介したVscaleサーバーの管理





Vscaleプロジェクトはわずか6か月前に開始され、現在は非常に活発に開発されています。 コミュニティのおかげで、多くの点で集中的な開発が可能になりました。APIを操作するためのライブラリを作成し、GitHubの幅広い視聴者と共有するユーザーがサービスの開発に多大な貢献をしています。 興味深い開発には、 GoRubyJava 、およびDocker Machineのプラグインのクライアントがあります。



ここでは、コミュニティにもう1つの便利なツールであるAnsible構成管理システムモジュールを提供します。これにより、 Vscaleに基づいて仮想インフラストラクチャを展開できます。



モジュールの機能



モジュールをインストールすると、 Vscaleに基づいた仮想インフラストラクチャの自動展開用のスクリプトを作成できます。 これを使用して、次の操作を実行できます。





この記事では、その使用例をいくつか見ていきます。 そのすべての機能は、 モジュールのドキュメントで詳細に説明されています



ダウンロードと初期セットアップ



モジュールの使用を開始する前に、いくつかの準備操作を実行する必要があります。 まず、 コントロールパネルで APIにアクセスするためのトークンを生成します。

次に、環境変数VS_API_KEY



を追加し、受信したトークンをその値として指定します。



 $ export VS_API_KEY=5c22a088f3b37c933e7480399f1e09258d6977bcd1eb2401de29e8001c9bedc36
      
      





SSHキーとライブラリのディレクトリを作成します。



 $ mkdir -p vscale-ansible/{credentials,group_vars}
      
      





その後、サーバーにアクセスするためのSSHキーを生成します。 既存のSSHキーを追加する必要がある場合は、構成ファイルでそのパスを指定するだけです(以下を参照)。



 $ ssh-keygen -f ./vscale-ansible/credentials/ansible
      
      





vscale-ansible / ansible.cfg構成ファイルを開き、次の設定を書き込みます。



 sudo_user = root remote_user = root host_key_checking = False private_key_file = ./credentials/ansible [ssh_connection] control_path = %(directory)s/%%h-%%r
      
      





また、vscale-ansible / inventoryファイルを作成します。このファイルには、Ansibleによって制御されるホストの名前が含まれます。



 [fe-servers] fe-[01:02] [local] localhost
      
      





その後、モジュールをロードできます。



 $ git clone https://github.com/vscale/ansible-vscale-modules.git ./library
      
      





さらなる作業の便宜上、vscale-ansible / group_vars / all.ymlファイルでいくつかの変数を定義します。



 --- vscale_token: "{{ lookup('env', 'VS_API_KEY')}}" key: "{{ lookup('file', 'credentials/ansible.pub') }}"
      
      







テストケース:サーバーの作成



必要な特性を備えたVscaleで新しいサーバーを作成するスクリプトを作成してみましょう。 テキストエディターでcreateserver.ymlファイルを作成し、次の行を追加します。



 --- - name: Add SSH key connection: local gather_facts: no hosts: fe-servers tasks: - name: Add SSH key to Vscale account run_once: true vscale_ssh: token: "{{ vscale_token }}" name: "Ansible" public_key: "{{ key }}" state: present
      
      





このフラグメントでは、2つの以前に定義された変数( token



およびpublic_key



)を使用してSSHキーを追加する手順を説明しました。

次に、作成するサーバーのパラメーターについて説明します。



 - name: Create scalet for inventory hosts vscale_scalets: token: "{{ vscale_token }}" name: "{{ inventory_hostname }}" plan: small location: spb0 image: ubuntu_14.04_64_002_master key_name: "Ansible" collect_facts: "yes" power_state: "started" state: present register: server - set_fact: ansible_ssh_host: "{{ server['scalet']['public_address']['address'] }}"
      
      





次に、サーバーにNginxをインストールします。



 - name: Install NGINX and fill disk remote_user: root hosts: - fe-servers tasks: - name: Install NGINX apt: pkg: nginx update_cache: yes state: latest - name: Filling disk command: dd if=/dev/zero of=/large.file bs=100M count=150 creates=/large.file
      
      





このフラグメントでは、標準のNginxインストール手順を説明するだけでなく、ディスクをいっぱいにしました。 このシナリオの次の部分をテストできるように、意図的にこれを行いました。



 - name: Check free disk space remote_user: root hosts: - fe-servers tasks: - name: Gather facts setup: - name: Upgrade server if disk has than 3Gb left hosts: - fe-servers connection: local tasks: - name: Upgrade vscale_scalets: token: "{{ vscale_token }}" name: "{{ inventory_hostname }}" plan: medium upgrade: yes state: present when: "{{ (ansible_mounts[0].size_available)/2**30 < 3*(2**30) }}"
      
      





その中で、空きディスク容量のチェックを実行します。 空きディスク容量が3 Gb未満の場合、サーバー構成はより生産的な構成に自動的に更新されます。



以上です。 変更を保存して、コマンドを実行します。



 $ ansible-playbook -i inventory createserver.yml
      
      





テスト用の記述されたスクリプトは、リポジトリにあります



サーバーへのソフトウェアのインストール



新しいサーバーを作成するだけのスクリプトの例を見ました。 それでは、ソフトウェアのインストールプロセスを自動化してみましょう。



これは、既製のスクリプトとロールを使用して行うことができます-使用してください:





上記の手順に従ってモジュールをまだインストールしていない場合は、スクリプトを使用してリポジトリを複製し、git submoduleコマンドを使用してモジュールを接続できます。



 $ git clone https://github.com/vscale/ansible-playbooks.git $ cd ansible-playbooks $ git submodule init $ git submodule update
      
      





この方法には特定の利点があります。ある種のリポジトリをサブモジュールの形で接続すると、常に動作する一貫した状態のままになります。 メインブランチのリポジトリを更新し、何かが「壊れる」場合でも、更新後にサブモジュールは変更されません。



SSHキーを生成し、構成ファイルにパスを追加することを忘れないでください:)



スクリプトの構造と構文は非常に単純であり、おそらく独自の何かを書くことができます-APIドキュメントが役立ちます。



おわりに



Ansibleモジュールを試してみてください。皆さんに役立つことを願っています。 さらなる改善のためのコメントや提案を歓迎します。

また、Vscaleのクライアントライブラリを作成するすべての人が、自分のジュースで料理するのではなく、コミュニティに自分の仕事の結果を知らせることをお勧めします。 最も興味深い発展について書いて、最も活発で才能のあるものを表彰します。




All Articles