日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Ansible-playbook简单应用的几个实例

發布時間:2025/3/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ansible-playbook简单应用的几个实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

①ansible-playbook的循環:

  重復執行某任務;對迭代項的引用,固定變量名為“item”,而后要在task中使用with_items給定要迭代的元素列表,列表方法:字符串/字典(類似json)  

- hosts: allremote_user: roottasks:- name: add some groupsgroup: name={{ item }} state=presentwith_items:- demo1- demo2- demo3- name: add some usersuser: name={{ item.name }} group={{ item.group }} state=present //模塊中調用的相關參數賦值時前后均無空格with_items:- { name: 'user1',group: 'demo1'} - { name: 'user2',group: 'demo2'}- { name: 'user3',group: 'demo3'} ////此處key后面的:與value之間要有一個空格,否則為語法錯誤

②ansible-playbook的條件判斷:

  相當于編程語言中的if語句,不過在ansible中要使用when語句,且要定義在tasks中

- hosts: allremote_user: roottasks:- name: Install httpd conf file to httpd2.2template: src=file/httpd.conf.c6.j2 dest=/etc/httpd/conf/httpd.confwhen: ansible_distribution_major_version == "6"- name: Install httpd conf file to httpd2.4template: src=file/httpd.conf.c7.j2 dest=/etc/httpd/conf/httpd.confwhen: ansible_distribution_major_version == "7"- name: Start httpdservice: name=httpd state=started enabled=true

③ansible-playbook限定執行范圍:

  當playbook指定的一批主機中有個別主機需進行變更時,不用修改playbook本身,可通過一些命令選項直接進行限定ansible-playbook的命令執行范圍。

  --limit選項:  

ansible-playbook test1.yaml --limit node2 //此時,ansbile-playbook中的hosts即便定義了all,也不會在node2這個組上執行playbook

  或者直接在playbook的yaml文件中顯式定義hosts要執行的主機,如:

    指定單臺主機:www.a.com

    指定多臺主機:www.a.com,www,b.com

    指定一組主機:dbserver

  也可以在執行playbook前先查看受影響的主機有哪些:

[root@node1 work]# ansible-playbook test2.yaml --list-hosts playbook: test2.yamlplay #1 (all): all TAGS: []pattern: [u'all']hosts (2):node3node2

④ansible加密模塊Vault

  在執行某些任務時,難免會觸及到一些密碼或敏感數據,此時需要對相關任務進行加密,ansible自帶的Vault可滿足大部分需求。

  使用ansible-vault命令給文件加密:

[root@node1 work]# ansible-vault encrypt test5.yaml //加密命令 New Vault password: Confirm New Vault password: Encryption successful

  此時查看test5.yaml的內容則顯示:

[root@node1 work]# cat test5.yaml $ANSIBLE_VAULT;1.1;AES256 32366237663533633838613431653433653061396630346633396232393265376138626630646633 6635646462346665613963303061323164623265303331610a633537393239633832383334386338 39393932633163303136353934343061363330313663633535626138613537633465326232383663 3036336337333163390a623733323635653536316335323663363736303733303362353839356164 38643665363131316631646166396634616131343835366261356130343061356438363530636364 61353764383636386438636662373665613031623366396364306262396536656362336161313630 33323437623435646133643831656433653061316439323931326134386263653665633037393037 62303865383165336362

  且直接使用ansible-playbook執行此文件會報錯,需要先解密。這里列出ansible-vault命令的幾個常用的選項:

ansible-vault命令的其他幾個常用選項:edit:用于編輯ansible-vault加密過的文件rekey:重新修改已被加密文件的密碼create:創建一個新文件,并直接對其進行加密view:查看經過加密的文件decrypt:解密文件

  ? 也可以在當前登錄用戶的家目錄下的.ansible目錄中創建一個文件用于存儲密碼,修改這些文件的權限為600,在運行時,使用如下命令進行:

ansible-playbook test5.yaml --vault-password-file /root/.ansible/vault_pass.txt // --vault-password-file PATH/TO/PASSWD_FILE

?⑤簡單基于roles來一鍵部署LAMP環境

  首先看一下php的角色目錄結構:

[root@node1 roles]# tree php/ php/ ├── default ├── files │?? └── php-fpm.conf ├── handlers │?? └── main.yaml ├── meta ├── tasks │?? └── main.yaml ├── templates │?? └── www.conf.j2 └── vars7 directories, 4 files

  如果使用yum安裝的php-fpm的話,其配置文件被切分成了兩部分默認的話,如果基于默認配置的話,則無需修改php-fpm.conf,直接修改www.conf即可。

  tasks/main.yaml的內容如下:

- name: install phpyum: name=php,php-fpm state=present - name: create php-fpm groupgroup: name=www state=present - name: create php-fpm useruser: name=www group=www state=present - name: install conf file1copy: src=php-fpm.conf dest=/etc/php-fpm.conf - name: install conf filetemplate: src=www.conf.j2 dest=/etc/php-fpm.d/www.confnotify: restart php-fpmtags: init conf file - name: start php-fpmservice: name=php-fpm state=started

  handlers/main.yaml的內容如下:

- name: restart php-fpmservice: name=php-fpm state=restarted

  templates/www.conf.j2的內容如下:

listen = {{ ansible_eno16777736.ipv4.address }}:9000//僅做測試演示的話,只修改此項即可。

  再來看下httpd的角色目錄結構:

[root@node1 httpd]# tree . ├── default ├── files │?? └── index.php //php測試頁 ├── handlers │?? └── main.yaml ├── meta ├── tasks │?? └── main.yaml ├── templates │?? ├── httpd.conf.j2 //httpd的主配置文件 │?? └── php.conf.j2 //此處是基于虛擬主機的php配置 └── vars└── main.yaml7 directories, 6 files

  tasks/main.yaml的內容如下:

- name: install htppdyum: name=httpd state=present - name: install conf filetemplate: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf src=php.conf.j2 dest=/etc/httpd/conf.d/php.conf.j2notify: restart httpdtags: change conf file - name: init index.phpcopy: src=index.php dest=/var/www/html/index.php - name: start httpdservice: name=httpd state=started enabled=true

  templates/php.conf.j2的內容如下(基于httpd2.4的配置):

DirectoryIndex index.php <VirtualHost *:80>ServerName www.phptest.comDocumentRoot "/var/www/html"ProxyRequests OffProxyPassMatch ^/(.*\.php)$ fcgi://localhost:9000/var/www/html/$1<Directory "/var/www/html">Options NoneAllowOverride NoneRequire all granted</Directory> </VirtualHost>

  mysql的角色目錄結構大同小異,可自行基于rpm包安裝或者其他安裝方式定義角色文件即可。

  寫好角色后,再定義一個任務,跑一下即可,此處任務文件為/etc/ansible/work/role_lamp.yaml,內容如下:

- hosts: tworemote_user: rootroles:- httpd- php- mysql

  跑完后,如無報錯,且測試頁能訪問即可。本例只是簡單的陳述了下大體的角色架構,里面還有很多需要細細雕琢之處,還需各位多多閱讀官方文檔或其他相關ansible的書籍,深入學習。

  

  

轉載于:https://www.cnblogs.com/trymybesttoimp/p/7216860.html

總結

以上是生活随笔為你收集整理的Ansible-playbook简单应用的几个实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。