Skip to content

latonaio/aion-ansible-unification

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

aion-ansible-unification

概要

aion-ansible-unification は、対象デバイス もしくは 対象サーバー に対して、aion-core、kubernetes、および、関連リソース の環境構築を、自動で行うツールです。
aion-ansible-unification には、必要なパッケージのインストール、Docker / Kubernetes のセットアップ、その他リポジトリのクローン、Docker Images の Pull 等 が含まれています。

動作環境

  • OS : Linux OS
  • CPU : ARM/AMD/Intel

セットアップ手順

I. local host(mac)にansibleをインストールします
II. remote hostでssh接続のための設定をします
III. local host(mac)でansibleの設定をします  

I.local host に ansible をインストールします

  1. local host(mac)にansibleをインストールします
# install ansible
brew install ansible

# install sshpass
brew tap esolitos/ipa
brew install sshpass
  1. local host(mac)に、aion-ansible-unification内で使用するモジュールをインストールします
# docker_imageモジュールを使うためにインストール
ansible-galaxy collection install community.docker

# set_timezoneモジュールを使うためにインストール   
ansible-galaxy collection install community.general   
  1. ansible coreを2.11.1にします
    ([kubernetes : Add Google Cloud Offical key]でエラーが出るため)
pip3 install ansible-core

II.remote hostで ssh接続 のための設定をします(下記の例ではCI/CDツールとして Bitbucket を利用)

  1. remote host上で SSH鍵を作成します
cd ~
mkdir .ssh
cd .ssh
vim config
⇒以下の内容でファイルを作成します
==========
Host bitbucket.org
    User git
    Port 22
    HostName bitbucket.org
    identityFile ~/.ssh/id_rsa
    TCPKeepAlive yes
    IdentitiesOnly yes
==========
ssh-keygen -t rsa
  ⇒質問されるので、最初だけ/home/ユーザ名/.ssh/id_rsaと入力。それ以外はすべてエンターで抜けます  
cat id_rsa.pub
  ⇒公開鍵が表示されるので、選択してコピーします 
  1. Bitbucket に公開鍵を登録します
    Bitbucket を開き、左下ユーザアイコン>Personal settings>SSH鍵>鍵を追加を選択
    Label: 「案件*-端末名(例:vega)」
    Key: 「コピーした公開鍵」
    を入力し、鍵を追加します

III.local host で ansible の設定をします

  1. このリポジトリをlocal host(mac)上にクローンし、該当のブランチに切り替えます
git clone git@github.com:latonaio/aion-ansible-unification.git
git checkout {ブランチ名}
  1. クローンしたリポジトリ内の inventory ファイルに端末情報を記載します
    remote host(対象端末)のIPアドレスは、remote hostのterminalで ifconfig をすると検索できます
[edge]
192.168.xxx.xxx             # remote host(対象端末)のIPアドレス

[edge:vars]
ansible_port=22
ansible_user=XXXXXX         # remote host(対象端末)のユーザー名
ansible_ssh_pass=XXXXXXX    # remote host(対象端末)のログインパスワード
ansible_ssh_private_key_file=~/.ssh/id_rsa
  1. クローンしたリポジトリ内の group_vars/all.yml に変数を設定する
user_name: "XXXXXX"             # remote host(対象端末)のユーザー名
host_name: "XXXXX"              # remote host(対象端末)のデバイス名
ip_address: 192.168.XXX.XXX     # remote host(対象端末)のIPアドレス
azure_iot_connection_string: HostName=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                # Azure IoTの接続情報
dbmysql_user: XXXXXXX           # Mysql DBユーザー名
dbmysql_password: XXXXXXXX      # Mysql DBユーザーログインパスワード
dbmysql_storage_size: 1Gi       # Mysql PersistentVolume サイズ
smb_ip_address: 192.168.XXX.XX  # SC連携 WindowsのIPアドレス
smb_workgroup: WORKGROUP        # SC連携 Windowsのワークグループ名
smb_user: test                  # SC連携 Windowsのユーザー名
smb_password: XXXXXXXX          # SC連携 Windowsのパスワード
  1. microSDやSSDから起動させる場合、run.yaml- sdboot- ssdboot行のコメントアウトを外します

使用方法

aion-ansible-unificationディレクトリ配下で以下のコマンドを実行します

ansible-playbook run.yaml  -i inventory --ask-become-pass --ask-vault-pass
BECOME password: [remote host(対象端末)のpasswordを入力]
Vault password: [api_access_keyの暗号復元のためのpasswordを入力]

エラー対処法

  1. 以下のような、python3を使ってね系のwarning
[DEPRECATION WARNING]: Distribution Ubuntu 18.04 on host 192.168.XXX.XXX should use /usr/bin/python3, but is using /usr/bin/python for backward
compatibility with prior Ansible releases.

whereis python3の実行結果を、ansible.cfg内の interpreter_python= 以降に追加します。
例)

interpreter_python=/usr/bin/python3

ファイル構成

実行するrole,taskの一覧

roleの一覧は run.yaml に記載、
各role内で行うtaskの一覧は、roles/{各role名のフォルダ}/tasks/main.yaml に記載されています。
実行するtaskの詳細は、それぞれのtaskフォルダ内の各yamlファイルに記載されていされています。

sdboot:

  • common-setting.yaml :スクリーンロック無効化などの設定
  • format.yaml :microSDのフォーマット
  • install.yaml :microSDに全データのコピー・microSDから起動するための設定等

ssdboot

  • common-setting.yaml :スクリーンロック無効化などの設定
  • format.yaml :SSDのフォーマット
  • install.yaml :SSDに全データのコピー・SSDから起動するための設定等

common

  • common-packages.yaml:curlやpython3等必要なパッケージのインストール
  • common-setting.yaml :タイムゾーンやキーボードの設定
  • go-install.yaml :goenvを使用してgolangのインストール

docker

  • install.yaml :docker.ioのインストール
  • setting.yaml :ユーザーのdockerグループへの追加、dockerの起動等

kubernetes

  • install.yaml :kubelet,kubeadm,kubectlのインストール
  • setup.yaml :Kubeadmでのセットアップ等

mysql

  • clone-repositories.yaml:必要なリポジトリのクローン(MySQL内のリポジトリ)
  • setup.yaml :mysqlの起動等

aion

  • created-directories.yaml:ディレクトリの作成(AionCore,Runtime等)
  • clone-repositories.yaml :必要なリポジトリのクローン(AionCore,DataSweeper内のリポジトリ。クローンするリポジトリ一覧については以下)
  • pull-images.yaml :必要なdocker imageをpull
  • setup-data-sweeper.yaml: 以下のファイルの書き換え
    • data-sweeper-batch-kube/mysql-config.json
    • data-sweeper-batch-kube/data-sweeper-batch-kube.yaml
    • data-sweeper-batch-kube/sql/DataSweeper_sweep_directories.sqlの読み込み
  • docker-build.yaml :AionCore, DataSweeperのimageをbuild

ansible-playbookの使い方

一部のtaskのみを実行したい場合、実行しない部分をコメントアウトすれば良いです。
例えば、dockerタスクのsetting.yamlの内容のみ実行したい場合、以下の通りコメントアウトします。

[run.yaml]
---
- hosts: edge
  gather_facts: False
  roles: # 実行するコマンド群の定義
    # - ex
    # - common
    - docker
    # - kubernetes
    # - aion
    # - mysql
[roles/docker/tasks/main.yaml]
---
# - include: install.yaml
- include: setting.yaml

クローンするリポジトリや pull する Docker Images の設定

クローンするリポジトリ名とブランチの一覧、pull する Docker Images の一覧は、roles/{各role名のフォルダ}/vars/clone-repositories.yaml または roles/{各role名のフォルダ}/vars/pull-images.yaml 内に記載されています。
クローンやpullの必要がないものはコメントアウトしたり、リポジトリごとにクローンしてくるブランチを設定したりして、使用できます。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published