2018年9月27日木曜日

ansible (Please add this host's fingerprint to your known_hosts file to manage this host.)

ansible-playbook 実行時に以下のエラーが表示された場合の対応策

fatal: [node-2]: FAILED! => {"msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this host's fingerprint to your known_hosts file to manage this host."}

◻️/etc/ansible/ansible.cfgの[ssh_connection]のブロックに以下の設定を記載する。
[ssh_connection]ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

Ansible(localhost限定)

OSSの自動生成方法として、asinbleが気になったので

localhostのみの導入方法を記述してみる。


◻️asinbleのインストールを行う
sudo -y yum install epel-release
sudo -y yum install ansible

◻️公開鍵の設定を行う
chmod 600 ~/.ssh
ssh-keygen -t rsa

◻️ユーザの作成
$ sudo useradd ansible
$ sudo passwd ansible

◻️赤文字を追記
$ sudo visudo
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
ansible ALL=(ALL)       NOPASSWD:ALL 

◻️ユーザの作成
$ sudo useradd ansible
$ sudo passwd ansible

◻️赤文字を追記
$ sudo visudo
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
ansible ALL=(ALL)       NOPASSWD:ALL 

◻️Yesに変更する
$ sudo vim /etc/ssh/sshd_config 
PasswordAuthentication yes

◻️作業用のフォルダを作成する
$ mkdir -p ~/samplebook
$ cd samplebook/

◻️hostファイルの生成を行う
$ vi hosts.yml 
=========================
[localhost]
localhost

[all:vars]
ansible_ssh_user=ansible
ansible_ssh_pass=上記で生成したパスワード
==========================

◻️nginx用のレシピを作成する
$ vim main.yml 
=========================
- hosts: all
  become: yes
  tasks:
  - name: Nginx install
    yum: name=nginx state=latest
  - name: Nginx Up
    service: name=nginx state=started enabled=yes
  - name: Nginx check
    shell: ps aux | grep nginx
    register: ps_result
    changed_when: false
  - debug: var=ps_result.stdout_lines
    when: ps_result | success
=========================-

◻️実行する
ansible-playbook -i hosts.yml main.yml 

◻️確認作業
systemctl status nginxを入力してみて

表示されていれば、完了です。

◻️上記、検証の段階で面倒なので以下、停止済みである。
SE linux
firewall

2018年9月26日水曜日

apache spark for raspberry pi

参照先 https://qiita.com/tMatSuZ/items/ab33f5bc1736ca79d388


SPARKをインストールしてみる。

◻️javaをインストールする(master/slave)


◻️sparkをダウンロードする。(master/slave)
wget http://ftp.jaist.ac.jp/pub/apache/spark/spark-2.3.1/spark-2.3.1-bin-hadoop2.7.tgz

◻️解凍する(master)
tar xzvf spark-2.3.1-bin-hadoop2.7.tgz


◻️認証鍵の作成を行う(master)
$ ssh-keygen
$ ssh-copy-id pi@rasp-sl01
$ ssh-copy-id pi@rasp-sl02


◻️conf/slave設定(master)
cd spark-2.3.1-bin-hadoop2.7
cp conf/slaves.template conf/slaves
vi conf/slaves


◻️conf/spark-env.shの設定(master)
cp conf/spark-env.sh.template conf/spark-env.sh
vi conf/spark-env.sh

◻️slavesparkのフォルダーをコピーする(master ->slave)
sudo rsync -avxP ~/spark-2.3.1-bin-hadoop2.7 pi@192.168.13.2:/home/pi
sudo rsync -avxP ~/spark-2.3.1-bin-hadoop2.7 pi@192.168.13.4:/home/pi


◻️conf/slave設定(slave)
cd spark-2.3.1-bin-hadoop2.7
vi conf/slaves

◻️conf/spark-env.shの設定(slave)
cd spark-2.3.1-bin-hadoop2.7
vi conf/spark-env.sh


◻️sparkClusterの実行(master)
./sbin/start-all.sh

http://192.168.13.3:8080sparkの管理画面が表示されているはず。

◻️sparkの実行
cd /spark-2.3.1-bin-hadoop2.7/bin
./spark-submit --class org.apache.spark.examples.GroupByTest --master spark://192.168.13.3:7077 examples/jars/spark-examples_2.11-2.3.1.jar


◻️以下のエラーが出てしまうので要調査(slave)

2018-09-26 12:28:27 WARN  NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Warning: Local jar /home/pi/spark-2.3.1-bin-hadoop2.7/bin/examples/jars/spark-examples_2.11-2.3.1.jar does not exist, skipping.
java.lang.ClassNotFoundException: org.apache.spark.examples.GroupByTest
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.spark.util.Utils$.classForName(Utils.scala:238)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:851)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:198)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:228)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:137)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
2018-09-26 12:28:27 INFO  ShutdownHookManager:54 - Shutdown hook called
2018-09-26 12:28:27 INFO  ShutdownHookManager:54 - Deleting directory /tmp/spark-a833aa5e-9d04-4409-a504-bde03594415b


◻️各slaveにて実行を行う

./bin/spark-shell --master spark://192.168.13.3:7077

◻️ブラウザにて、http://masterIP:7077を入力してみる
Running Applications に表示されていることが確認できる。





◻️sparkClusterの再実行(master)
./sbin/start-all.sh


pi@rasp-master:~/spark-2.3.1-bin-hadoop2.7/sbin $ ./start-all.sh 
org.apache.spark.deploy.master.Master running as process 10560.  Stop it first.
pi@localhost's password: rasp-sl01: starting org.apache.spark.deploy.worker.Worker, logging to /home/pi/spark-2.3.1-bin-hadoop2.7/logs/spark-pi-org.apache.spark.deploy.worker.Worker-1-rasp-sl01.out
rasp-sl02: starting org.apache.spark.deploy.worker.Worker, logging to /home/pi/spark-2.3.1-bin-hadoop2.7/logs/spark-pi-org.apache.spark.deploy.worker.Worker-1-rasp-sl02.out


◻️再び、ブラウザにて、http://masterIP:7077を入力してみる

Workersに各slaveが追加されていることが確認できた。


◻️調査中
spark shell実行後、エラーが出ている状況。
参考にできそうなページ。
 ->多分、実行権限の問題かも

https://qiita.com/wag/items/e20e8a049e49f1e16f91

2018年9月25日火曜日

hadoop for raspberry pi

◻️./hdfs dfsadmin -reportを実行するとjava関連のエラーが出てしまうので
対策を探ってみた。

****error内容******
Java HotSpot(TM) Client VM warning: You have loaded library /opt/hadoop/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.
******************


$ vi ~/.bashrc

◻️以下、修正を行う
*****************
# -- HADOOP ENVIRONMENT VARIABLES START -- #
export HADOOP_HOME=/opt/hadoop/
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
# -- HADOOP ENVIRONMENT VARIABLES END -- #

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"


export JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre
export PATH=$PATH:$JAVA_HOME/bin

*******************


◻️以下、認証鍵を再設定してみる。
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

hadoop memo

./hdfs dfsadmin -report

上記、コマンドは、以下の操作が行わないと
実行できないようだ!

  ./start-yarn.sh
  ./start-dfs.sh

centos7 導入後に入れるものリスト

  • yum update
  • yum groupinstall 'Development tools'
  • yum install wget

2018年9月22日土曜日

GCP無料枠利用方法について


1)無料トライアルを選ぶ


2)以下、チェックする


3)課金情報を入力後に"無料トライアル開始"を選ぶ


4)手続き完了後に、以下の画面が出ることにより使用可能になる。

GCP(VMインスタンスを立ち上げ方法)

Google Cloud Platform で VMインスタンスを立ち上げる


1)My First Projectを選択する


2)プロジェクト名の入力を行なったら"作成"ボタンを押す。

3)"MyFirst Project"を選択して、先ほど作成した"プロジェクト名"を選択する。



4)新規のVMインスタンスを立ち上げる




5)"作成"ボタンを押す



6)以下、設定値を入力する。
 (1)名前を記載
 (2)us-central1-aを選ぶ
 (3)micro(共有 vCPU x 1)を選ぶ
 (4)必要最低限の無料枠の構成になる。
  注意)構成を間違えると使用量が異なるので、設定ミスがないこと!



7)ブートディスクの設定を行いたいので、"変更"を選択する。



8)以下、ブートディスクの構成を行う。
 (1)centos7を使用したいので、以下の設定値を入力する
 (2)サイズを30GBにする
 (3)設定を終えたら、選択を押す。



9)以下、ファイアウォールの設定に関して、チェックを行い
最後に、"作成"ボタンを押すことによりVMの生成を行う。


10)以下の表示が出れば、完成となる。






無料ドメインの取得方法

以下のサイトで12ヶ月間無料の登録を行う。
以後、期限切れの時に再取得する必要あり。

https://my.freenom.com

GCP(wordpress導入)

◾️前回設定した、VPCにDockerのインストールを行う。

1)コンソールを開く

2)以下、コマンドを投入する。

curl -fsSL https://get.docker.com/ | sh


(完了するまで、5分程度かかった。)



3)再起動後も、自動で起動した状態にしたいので

以下のコマンドを投入する。

sudo systemctl enable docker



4)Docker-composeをインストールを行う。


sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose



5)Docker-composeのファイル権限を変更する。

sudo chmod +x /usr/local/bin/docker-compose



◾️KUSANAGI Runs on Dockerの導入を行う

1)下記のコマンドでファイルをダウンロードし、環境構築に必要な階層と
docker-compose.ymlのファイルを準備する
sudo curl https://www.karelie.net/wp-content/uploads/wordpress.tar.gz --output "/home/wordpress.tar.gz"
2)先ほどダウンロードしたファイルの解凍を行う。 sudo tar -zxvf /home/wordpress.tar.gz -C /home/ 3)コマンドでそれぞれのdocker-compose.ymlを編集していくので、
先に権限も変更しておく。
sudo chmod 707 /home/wordpress/*/docker-compose.yml

◾️Dockerネットワークを作成

1)Dockerのネットワーク環境を下記のコマンドで構築する。
sudo docker network create --driver bridge common_link
以下のエラーが出ている状態、要調査。
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
->上記、sudo rebootによりコマンド実行可能になったので、解決。


◾️プロキシサーバーコンテナを起動(nginx-proxy)

1)以下のコマンドを実施する。
sudo docker-compose -f /home/wordpress/nginx-proxy/docker-compose.yml up -d

上記、コマンド実行ができないので以下の手順を行う。

2)sudo visudo

3)以下を追加する。
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/local/bin:/usr/bin



上記、追記することによりプロキシサーバーコンテナを起動できる。


◾️コンテナの起動

1)下記のコマンドを実行してデータベースサーバーコンテナを起動させる。
sudo docker-compose -f /home/wordpress/mariadb/docker-compose.yml up -d


以下、エラー出て実行不可の様子。

ERROR: The Compose file '/home/wordpress/mariadb/docker-compose.yml' is invalid because:services.mariadb.environment.MYSQL_ROOT_PASSWORD contains {"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30eb\u30fc\u30c8\u30d1\u30b9\u30ef\u30fc\u30c9": null}, which is an invalid type, it should be a string, number, or a null

2)上記のエラーが出るので、以下のファイルの修正を行う。vi /home/wordpress/kusanagi-1/docker-compose.yml
3)赤枠にMySQLに関する予め決めておいた設定値を記載する。



4)以下のコマンドを投入することにより実行可能になった。sudo docker-compose -f docker-compose.yml up -d




◾️kusanagi-php7のビルド
1)以下、コマンドを投入してphp7のビルドを行う。sudo docker build -t kusanagi-php7 /home/wordpress/kusanagi-php7/

◾️wordpress(kusana)コンテナ起動
1)kusanaコンテナを起動させる。sudo docker-compose -f /home/wordpress/kusanagi-1/docker-compose.yml up -d



上記、該当のホストにアクセスしたがサイトが見つからない状態になる。。。要調査かな

nohup コマンド

nohup コマンド

nohup コマンドは、ハングアップシグナル(SIGHUP, HUP)を無視するかたちでコマンドを実行させるコマンドです。
例えば、ターミナルが突然切断された等の理由(TeraTermを×で閉じるとか、切断するとか)でクローズされる場合、その端末から起動されたプロセスグループにはHUPシグナルが送信されます。このHUPシグナルを受けて、それまで実行していたプログラムは終了しますが、nohup コマンドを使ってプログラムを実行した場合は、このHUPシグナルを無視するので、結果、そのプログラムは処理を続けます。
memo
bash、tcsh、ksh をデフォルト設定のまま使っていれば、'&'をつけてコマンドを実行するだけでログアウトしても処理は継続されます。zshの場合はログアウト時もHUPシグナルが送信されますので、処理は終了します。
bashを使っていても、以下のように、
# shopt -s huponexit  ← huponexitをONに変更。OFFにするには、「-u」オプションを使う
の設定をあらかじめしてあるとログアウト時にHUPシグナルが送信されます。
zshを使っていたり、huponexit が on になっていたりする場合で、ログアウト後も処理を継続したい場合は、nohupを使います。

無料ドメイン取得(kusanagi wordpress)

freenom.com というサービスがあって、12ヶ月間は無料で使えるドメインから入手する。


digihide.gaで登録を行なってみる。


sudo password 作成

sudo passwd



docker (kusanagi wordpress)インストール作業の注意点

注意点としては「データベースのホスト名」は「mysql」とすること。
また、マルチサイト運用をする場合は必ず「テーブル接頭辞」をそれぞれ異なるものを入力する。



2018年9月18日火曜日

dockerトラブル対策

◾️sudo docker psで以下のメッセージが表示された場合
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?


1)以下を実施する
systemctl start docker

kusanagi docker(コンテナの接続方法)

例)以下、nginxのコンテナの接続方法になる。docker exec -it kusanagi-1_kusanagi-nginx_1 sh

下線にコンテナ名を入力。

docker 操作メモ

1)dockerのイメージを取得するコマンド
# docker pull [アプリ名]
      -> 例: docker pull nginx


2)稼働中のコンテナの確認コマンド
# docker ps


3)dockerのイメージ確認コマンド
# docker images


4)コンテナの削除コマンド
# docker rm [コンテナID]


5)コンテナのイメージ削除コマンド
# docker rmi [イメージID]



raspberry pi (自動アップデート)


1)unattended-upgradesを導入する。

sudo apt-get update 
sudo apt-get install unattended-upgrades //パッケージ
sudo dpkg-reconfigure -plow unattended-upgrades  //自動設更新ァイル  ※GUIがでるのでYESを選択して下さい。


<unattended-upgradesを使うと、以下のようなことが出来る>
◼︎自動アップデート
◼︎自動アップデート前にメールで通知を出してくれる。
◼︎アップデート中にエラーが起きた場合もメール通知を出してくれる。
◼︎時間指定での再起動

サイト:
https://qiita.com/Fendo181/items/659f306232f55fc5a8de


raspberry pi(kubernetes-dashboardの導入方法)

1)ダッシュボードの導入方法について以下の手順になる。

$ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard-arm.yaml

ポイント:成功すれば、以下のメッセージになる。
*************************************
secret/kubernetes-dashboard-certs created
serviceaccount/kubernetes-dashboard created
role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
deployment.apps/kubernetes-dashboard created

service/kubernetes-dashboard created
**********************************************


2)以下のコマンドを投入して起動する。
$ kubectl proxy


EFS(Dockerfile)の記載について注意

  Dockerfileにefsのマウントパス宛に、ファイルコピーを行うと ECSのサービス作成時に、コンテナのデプロイ失敗に(container run time error)になるので 別経由で、EFSにファイルをコピーした方が良い!! <Dockerfile> ...