記事のディレクトリ
1. Ansibleは確かに非常に強力です。開始するには、次の点に注意する必要があります。
主な使用シナリオは、他のノードマシンを制御するためにansibleをインストールするホストです。ただし、ノードマシンはクライアントをインストールする必要はありません、これは非常に大きな利点を持って生まれます
Ansibleシステムは、制御ホストから管理対象ノードまで2つのタイプに分けることができます。つまり、アドホックとプレイブック:
-
アドホックモード(ポイントツーポイントモード)
は、単一のモジュールを使用し、単一のコマンドのバッチ実行をサポートします。アドホックコマンドは、すばやく入力でき、保存する必要のないコマンドです。これは、bashの1文のシェルに相当します。 -
プレイブックモード(プレイブックモード)
は、Ansibleの主要な管理方法であり、Ansibleの強力な機能の鍵です。ハンドブックは、Webサービスのインストールと展開、データベースサーバーのバッチバックアップなど、複数のタスクのコレクションを通じて機能のクラスを完了します。プレイブックは、複数のアドホック操作を組み合わせた構成ファイルとして簡単に理解できます。
1.1、アドホックモード(ポイントツーポイントモード)
1つのコマンドが実行されます1つのコマンド
実行できるコマンドは次のとおりです。
- ホスト接続テストのping
- commandリモートホストでコマンドを実行し、結果をホストに返します
- シェルはシェルインタープリターを呼び出してコマンドを実行し、パイプなどのシェルのさまざまな機能をサポートします。
- copyは、ファイルをリモートホストにコピーするために使用されますが、特定のコンテンツに対するファイルの生成と変更のアクセス許可をサポートします。
- fileは、ファイルの作成、リンクファイルの作成、ファイルの削除など、ファイルの属性を設定するために使用されます。
- フェッチは、リモートホストからローカルにファイルを取得(コピー)するために使用されます
- cronこのモジュールは、cronのスケジュールされたタスクの管理に適しています
- yumこのモジュールは主にソフトウェアのインストールに使用されます
- serviceこのモジュールは、サービスプログラムを管理するために使用されます
- userこのモジュールは、主にユーザーアカウントを管理するために使用されます
- groupこのモジュールは、主にグループを追加または削除するために使用されます
- スクリプトこのモジュールは、管理対象マシンでローカルスクリプトを実行するために使用されます
例:ノード1のホスト上のファイルを照会し、lsコマンドを実行します。 (シェルコマンドの簡単な実行)
1.2、プレイブックモード(スクリプトモード)
プレイブックは、1つ以上のプレイで構成されるリストです。プレイの主な機能は、以前にグループにマージされたホストを、ansibleのタスクを通じて事前に定義された役割にドレスアップすることです。基本的に、いわゆるタスクはansibleを呼び出すモジュールにすぎません。プレイブックで複数のプレイを整理します。つまり、事前に設定されたメカニズムに従って、それらを組み合わせてタスクを完了することができます。
プレイブックモード(スクリプトモード)であるすべてのコマンドをまとめます
簡単に言えば、
--- #固定格式
- hosts: group #定义需要执行主机组,应该事先配置好
remote_user: root #远程用户
vars: ##定义变量
jar_data_dir: /usr/local/cancan/numberingspecification #变量
tasks: #定义一个任务的开始
- name: 创建jar的数据目录 #定义任务的名称
file: path={
{
jar_data_dir }} state=directory #调用模块,具体要做的事情
上記は特定のケースです
2.実際の戦闘、ansible-playbookを介したデプロイにjarパッケージを使用
2.1ステップ
- ノード上にjarデータディレクトリを作成します。これは、マスターノードが過去にjarパッケージを移動するのに便利です。
- jarを固定の場所、つまり作成された場所に移動します
- 既存のJavaプロセスを削除する
- Javaプロセスを実行する
2.2特定のyml
java_install.yml
---
- hosts: group
remote_user: root
vars:
jar_data_dir: /usr/local/cancan/numberingspecification
tasks:
- name: 创建jar的数据目录
file: path={
{
jar_data_dir }} state=directory
- name: 移动jar到固定位置
copy: src=./java_install/numberingspecification-0.0.1-SNAPSHOT.jar dest={
{
jar_data_dir }}
- name: 删除现有的进程
shell: "kill -9 `ps -ef|grep numberingspecification|grep -v grep|awk '{printf $2}'`"
- name: 部署进程
shell: "nohup java -jar -Dserver.port=7777 -Dspring.datasource.password=123456 {
{ jar_data_dir }}/numberingspecification-0.0.1-SNAPSHOT.jar > {
{ jar_data_dir }}/log.file 2>&1 &"
2.3ファイルの特定の場所
[root@localhost roles]# pwd
/etc/ansible/roles
[root@localhost roles]# tree
.
├── java_install
│ └── numberingspecification-0.0.1-SNAPSHOT.jar
├── java_install.yml
2.4実行
ansible-プレイブックjava_install.yml
PLAY [group] ******************************************************************************************************************************************************
TASK [Gathering Facts] ********************************************************************************************************************************************
ok: [172.25.10.70]
TASK [创建jar的数据目录] *************************************************************************************************************************************************
ok: [172.25.10.70]
TASK [移动jar到固定位置] *************************************************************************************************************************************************
ok: [172.25.10.70]
TASK [删除现有的进程] ****************************************************************************************************************************************************
changed: [172.25.10.70]
TASK [部署进程] *******************************************************************************************************************************************************
changed: [172.25.10.70]
PLAY RECAP ********************************************************************************************************************************************************
172.25.10.70 : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
三、終わり
Jenkinsは、Javaプログラミング言語で記述された最も人気のあるオープンソース自動化サーバーです。これは、ソフトウェア開発プロセスにおける継続的インテグレーションと継続的デリバリー(CI / CD)の自動化されたプロセスを促進します。
AnsibleはIT自動化ツールです。ソフトウェアの展開、システムの構成、およびCD(継続的展開)やローリング更新などのより高度なITタスクをダウンタイムなしで調整できます。
ジェンキンス | Ansible |
---|---|
インストールが簡単。 | インストールが難しい。 |
Jenkinsは多くのプラグインを提供しています。 | サポートするプラグインが少なくなります。 |
C、C ++、Java、Perl、Python、Rubyおよびその他の言語をサポートしています。 | C、Python、JavaScript、Ruby言語をサポートしています。 |
Jenkinsは無料です。 | Ansibleは無料ではありませんが、無料の試用版があります。 |
Windows、Mac OS X、Linuxなどをサポートしています。 | また、Windows、Mac OSXなどもサポートしています。しかし、Windowsは苦痛を伴う可能性があります。 |
重さは軽くありません。 | 重量はとても軽いです。 |
Jenkinsのセットアップと構成は簡単ではありません。 | Ansibleは使いやすく、構成とインストールが簡単です。 |
それはMITライセンスの下でライセンスされています。 | これは、独自の商用ライセンスの下でライセンスされています。 |
これはサーバーベースのツールです。 | クラウドベースのツールです。 |
3.1要するに
Jenkinsはパッケージサーバーとして使用され、Webコントロールサーバー
ansibleはwarパッケージをリモートマシンに公開します