理論
Ansible-自動化された操作とメンテナンス:
- Ansibleのコアミッションは何ですか?
回答:運用と保守-構造全体の安定性を維持し、タイムリーな調査と調整などを行います。 - Ansibleのコアミッションは?
バッチ展開サービスの解決、再起動、デバッグなど。
他の同様のansible製品(ansibleが現在最も人気があります)
– Puppet
– Saltstack
Puppet&saltstackの典型的なC / Sモードツール-サーバー側としていくつかのデバイスが必要です(制御-命令の送信)
- 管理対象端末の数に関係なく、クライアントをインストールする必要があります
–Pythonで開発されたAnsibleとSaltstack->従来のソースコードCC ++と比較
なぜansibleが最もホットなのですか?
- 高い並行処理
- 軽量で制御が簡単
- クライアントは必要ありません
- sshに基づく
Ansibleの最適化
実際、 Ansibleの最適化-制御効率はAnsible自体を最適化するものではありません-Netcomとsshに基づくプロトコル
sshすべてのサーバーがデフォルトでオンになっています。
検証:パスワードパスワード検証
キー認証-キーペア-秘密キーと公開キー
-公開キー-ロック-公開キーはインターネット
経由で送信できます-秘密キー-キー-送信できません
必要がありますsshサービスを最適化する-キャンセルのプロンプトと接続の最大数と検証時間
軽量とは軽量
とは:コードの設計と使用
例:Apache-weight&Nginx-lightweight- code
-Nginxから多くのまれな機能を差し引いたもの-> Nginxは特定の環境向けです|業界開発-Eコマース
-Apahceのインストールと展開&control-Nginxが削減した多くのリソースを消費する
重要なコンポーネント:
-Ansible:コア-ユーザーリクエストの処理に使用
-在庫:在庫-ダウンストリーム機器のカウントと指定に使用されますか?-> IPアドレス/ネットワークセグメントとホスト名-
プレイブック:スクリプト-ダウンストリーム機器のバッチ処理タスクのシーケンスを指定するために使用されます
-モジュールとプラグイン:モジュールとプラグイン固有のアプリケーション。ダウンストリーム機器が特定の操作を実行するときに呼び出す必要があります。
Ansibleの重要なドキュメントと重要なコマンド
-ファイル:デフォルトの/ etc / ansible
-Inventoryの場合、inventory-ファイルを管理するホストファイルを制御できます
-パスを定義しますAnsibleは機能の一部を調整しますマニフェストファイルのパス、役割の調整- anisble.cfg構成構成-Roles
ディレクトリ-定義-Ansibleの複数のタスクのロール
重要なコマンド
– ansible-docコマンドは、「モジュール|プラグイン」固有の関数とパラメーター
を表示するために使用されます– ansible-単一の制御コマンドを実行するために使用されます– ansible-
playbook-プレイブックを実行するために使用されます
–ansible-galaxy-使用されますキャラクターを作成するには
プレイブックを使用して複数のLAMP環境をデプロイする
プレイブック-ロールはディレクトリを使用します:
ファイル:送信のためにリモートサーバーと構成ファイル
コピーモジュールに同期する必要があるソースファイルを保存します-ファイルディレクトリに.j2サフィックスを入れないでください
タスク:タスクセット-どのタスクを実行しますかダウンストリームデバイスは
テンプレートを実行する必要があります:テンプレートファイルを実行するために使用されます-一般的にいくつかのスクリプトを配置します-一般的な構成ファイルhttpd.conf-> httpd.conf.j2
テンプレート:テンプレートファイルを実行するために使用されます-一般的にいくつかのスクリプトを配置します-一般的な構成ファイルhttpd.conf ->httpd。conf.j2
送信用テンプレートモジュール-.j2サフィックス
コピーとテンプレート-ファイル転送用の2つのモジュール-
共通のコピー-主にファイルディレクトリ内のファイル用-
テンプレートディレクトリ用の.j2形式(.exe、.docなど)のテンプレート
練習
サーバー上のAnsibleを使用してClient1とClient2でLAMPを構築する
環境:サーバー:192.168.1.61
client01:192.168.1.63
client02:192.168.1.64
1.時間とタイムゾーンを同期します
[root@192 ~]# ntpdate ntp1.aliyun.com
[root@192 ~]# cp -a /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2.epelソースを追加してansibleをインストールします
[root@192 ~]# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@192 ~]# yum -y install ansible
3.パスワードなしのログインを構成します
46 ssh-keygen
47 ssh-copy-id 192.168.1.63
48 ssh-copy-id 192.168.1.64
4.構成チェックリストテストansible
[root@192 ansible]# pwd
/etc/ansible
[root@192 ansible]# tail -3 hosts
[web]
192.168.1.63
192.168.1.64
[root@192 ansible]# ansible web -m ping
192.168.1.64 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
192.168.1.63 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
5.サーバー安装http&mariadb
[root@192 ansible]# yum -y install httpd mariadb-server mariadb
6.初期化
root@192 roles]# ansible-galaxy init lnmp
- Role lnmp was created successfully
- [root@192 roles]# tree lnmp/
lnmp/
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── README.md
├── tasks
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml
7.cp構成ファイル
[root@192 files]# cp /etc/httpd/conf/httpd.conf ./lnmp/files/
[root@192 files]# cp -a /etc/my.cnf ./lnmp/files/
[root@192 files]# cat index.php
<?php
phpinfo();
?>
[root@192 files]# tree . #完成后一共三个文件
.
├── httpd.conf
├── index.php
└── my.cnf
8.スクリプトテンプレートを作成します
[root@192 tasks]# pwd
/etc/ansible/roles/lnmp/tasks
[root@192 tasks]# cat main.yaml
- name: prepare config
shell: iptables -F
- name: clean the firewalld
shell: systemctl stop firewalld
- name: webserver install
yum: name=httpd state=installed
- name: config file replace
copy: src="httpd.conf" dest="/etc/httpd/conf/httpd.conf"
- name: provide index page
copy: src="index.php" dest="/var/www/html"
- name: mysql install
yum: name=mariadb-server state=installed
- name: config file replace
copy: src="my.cnf" dest="/etc/my.cnf"
- name: install php
yum: name=php,php-mysql state=installed
- name: start httpd service
service: name=httpd state=started
- name: start mariadb service
service: name=mariadb state=started
9.電話する
[root@192 roles]# pwd
/etc/ansible/roles
[root@192 roles]# cat install_lamp.yml
- name: LAMP bulid
remote_user: root
hosts: web
roles:
- lamp
[root@192 roles]# ansible-playbook install_lamp.yml
10.テスト