Ansibleとは
Ansibleは、2013年に発売されたIT自動化およびDevOpsソフトウェアです。2015年にRedhatに買収されました。Pythonに基づいて開発され、多くの古い運用および保守ツールの利点を組み合わせて、バッチオペレーティングシステム構成、バッチプログラム展開、バッチ実行を実現します。コマンドおよびその他の機能。
Ansibleは次のことを実現できます。
1.APPの自動展開
2.構成アイテムの自動展開
3.自動継続的デリバリー
4.自動(AWS)クラウドサービス管理
なぜansibleを選ぶのか
構成管理ソフトウェアの選択は、いくつかの点から長所と短所を比較検討することに他なりません
。1。アクティブ性(コミュニティ)
2。学習コスト
3.使用コスト
4.コーディング言語
5.パフォーマンス
6.広く使用されているかどうか
Ansibleの利点
1.使用するのにSSHとPythonのみが必要
2.クライアントなし
3.Ansibleは強力で、モジュールが豊富
4.使いやすく、しきい値が低い
5. Python開発に基づいて、二次開発を行うのが簡単
6.より多くの企業を使用するコミュニティがアクティブです。
ansible機能1
1.モジュラー設計、完全な特定のタスクへの呼び出し、特定のモジュール
2.実装は、Python、言語に基づいて
paramiko-
PyYAMLと(半構造化言語)
-Jinja2
そのモジュールは、JSONなどの標準的な出力形式をサポートし、任意のプログラミング言語で書き直すことができます。
ansible機能2
1簡単な導入
2マスタースレーブモードの作業
3カスタムモジュールの
サポート4プレイブックのサポート
5使いやすさ
6多層展開の
サポート7異種IT環境のサポート
作業過程
ansibleの一般的な実行プロセスは
、構成を読み取ります→マシンとグループのリスト全体を取得します→host-patternを使用してマシンリストをフィルタリングします→パラメーターに従って実行モジュールと構成を決定します→ランナー実行リターン→出力、終了
================================================== ====================================
ansibleインストール
ソフトウェアの依存関係
管理ホストの
場合-Python2.6またはPython2.7 ansibleは、次のモジュールを使用する必要があります。これらのモジュールはすべてインストールする必要があります
1.paramiko 2.PyYAML 3.Jinja2 4.httplib2 5.six
管理対象ホストの場合-AnsibleはデフォルトでSSHプロトコルを介してマシンを管理します
- AnsibleはデフォルトでSSHプロトコルを介してマシンを管理します
- 管理対象ホストはsshサービスを開き、ansibleホストがログインできるようにする必要があります。3。Python2.5以降
も管理対象ノードにインストールする必要があります
。4。管理対象ノードでSElinuxがオンになっている場合、libselinux-pythonはインストール済み
実機管理
Yumのインストール
1.ソフトウェアパッケージを実マシンのFTP共有ディレクトリにコピーし
ます
。2 。インデックスファイルcreaterepo / var / ftp /ファイル名
createrepo--updateを更新します。
インストールと検証
1.ansibleホスティングホストでyum構成ファイルを構成します2.yum installansibleを
インストールします3.ansible--versionを
確認します
6台の仮想マシン、2CPU 1.5G以上のメモリ、10G以上のハードディスク、1つのネットワークカードを起動します
CPU名 | IPアドレス | キャラクター |
---|---|---|
ansible | 192.168.1.40 | 管理ホスト |
web1 | 192.168.1.41 | ホスティング |
web2 | 192.168.1.42 | ホスティング |
db1 | 192.168.1.43 | ホスティング |
db2 | 192.168.1.44 | ホスティング |
キャッシュ | 192.168.1.45 | ホスティング |
ホストの定義とグループ化
- ansibleをインストールした後、いくつかの簡単なタスクを実行できますansible構成ファイルの検索順序
- まず、ANSIBLE_CONFIG変数で定義された構成ファイルを検出します
- 次に、現在のディレクトリにある./ansible.cfgファイルを確認します
- 現在のユーザーのホームディレクトリにある〜/; ansible.cfgファイルをもう一度確認してください
- 最後に、/ etc / ansible /ansible.cfgファイルを確認します
- etc / ansible / ansible、cfgはansibleのデフォルトの設定ファイルパスです
ansible管理マシンを構成する
]# eip 40
]# echo ansible > /etc/hostname
]# hostname ansible
]# reboot
]# vim /etc/yum.repos.d/local.repo
[local_repo]
name=CentOS-$releasever - Base
baseurl="ftp://192.168.1.254/centos-1804"
enabled=1
gpgcheck=0
[ansible]
name=ansible
baseurl="ftp://192.168.1.254/ansible"
enabled=1
gpgcheck=0
~
]# yum repolist
]# yum -y install ansible
]# ssh-keygen -t rsa -b 2048 -N '' -f key
]# for i in web1 web2 db1 db2 cache ; do ssh-copy-id -i key.pub ${i};done
]# vim /etc/hosts
]# 192.168.1.40 ansible
192.168.1.41 web1
192.168.1.42 web2
192.168.1.43 db1
192.168.1.44 db2
192.168.1.45 cache
]# for i in web1 web2 db1 db2 cache ; do rsync -av /etc/hosts root@${i}:/etc/hosts ;done
]# vim /etc/ansible/hosts
[web]
web1
web2
[db]
db1
db2
[other]
cache
[app:children]
web
db
[all:vars]
ansible_ssh_private_key_file="/root/key"
]#vim ansible.cfg
[defaults]
inventory=myhost
host_key_checking=false
]# ansible app1 -m ping
]# cd
]# ansible web -m shell -a 'echo ${HOSTNAME}'
]# ansible cache -m shell -a 'touch testfile'
]# ansible web1,db2 -a "useradd nb"
]# ansible web1,db2 -a 'echo 123 |passwd --stdin nb'
]# ansible web1,db2 -a 'id nb'
]# vim 1.sh
#!/bin/bash
id nb
if [ $? != 0 ];then
useradd wk
echo 456 |passwd --stdin wk
fi
]# ansible all -m script -a "/root/1.sh"
]# vim /etc/resolv.conf
]# ansible all -m copy -a 'src=/etc/resolv.conf dest=/etc/resolv.conf'
]# ansible all -a 'cat /etc/resolv.conf'
]# ansible db -m yum -a 'state=installed name=mariadb-server'
]# ansible db -m service -a 'state=started name=mariadb enabled=yes'
]# ansible-doc script
]# ansible db -m script -a '/root/1.sh'
================================================== ============================== 1。
共通コマンドモジュール
- ansible all -m ping
- ansible all-mコマンド-a ''
- ansible all -m shell -a ''
- ansible all -m lineinfile -a ''
- ansible all -m replace -a ''
- ansible all -m copy -a'scr:dest: '
- ansible all -m yum -a'state = name '
- ansible all -m script -a '/ root / 1.sh'
- ansible all -m setup -a ''
- 10ansible all -m service -a ''