ansible 劇本進階 角色

主要內容:

playbook(劇本)

roles

一.查看收集到的信息

ansible cache -m setup

setup (須要瞭解的參數)

ansible_all_ipv4_addresses # ipv4的全部地址
ansible_all_ipv6_addresses # ipv6的全部地址
ansible_date_time # 獲取到控制節點時間
ansible_default_ipv4 # 默認的ipv4地址
ansible_distribution # 系統
ansible_distribution_major_version # 系統的大版本
ansible_distribution_version # 系統的版本號
ansible_domain #系統所在的域
ansible_env #系統的環境變量
ansible_hostname #系統的主機名
ansible_fqdn #系統的全名
ansible_machine #系統的架構
ansible_memory_mb #系統的內存信息
ansible_os_family # 系統的家族
ansible_pkg_mgr # 系統的包管理工具
ansible_processor_cores #系統的cpu的核數(每顆)
ansible_processor_count #系統cpu的顆數
ansible_processor_vcpus #系統cpu的總個數=cpu的顆數*CPU的核數
ansible_python # 系統上的python
ansible cache -m setup -a 'filter=*processor*' # 用來搜索

補充內容(正則表達式)python

* 匹配數量,表示0或者屢次

? 匹配數量,表示0或者1次

. 除換行符之外的全部字符

+ 至少一次

[123abc] 匹配內容,or

() 分組

{m} 次數,出現m次

{m,} 至少m次

{m,n}出現m-n次

a*.b

二.條件判斷

  • 不一樣的系統mysql

  • 不一樣的版本linux

  • 不一樣的環境nginx

  • 不一樣的用戶web

- hosts: db
  remote_user: root
  tasks:
  - name: createfile
    copy: content="大弦嘈嘈如急雨" dest=/tmp/a.txt
    when: a=="3"
  - name: cratefile
    copy: content="小弦切切如私語" dest=/tmp/a.txt
    when: a=="4"

擴展:Ubuntu 安裝包的方式是apt-get正則表達式

tags(傳遞標籤)

- hosts: db
  tasks:
  - name: wadong
    tieqiao: wadong
  - name: tk
    dong: tk
    tags: tk
- hosts: web
  tasks:
  - name: installnginx
    yum: name=nginx
  - name: copyfile
    copy: src=/etc/nginx/nginx.conf dest=/etc/nginx/nginx.conf
    tags: copyfile
  - name: start
    service: name=nginx state=started
    
ansible-playbook -t copyfile p7.yml 

 

循環 with_item

一次性建立多個redis

- hosts: gb
  tasks:
  - name: gbqc
    dong: {{ item }}
    with_items:
    - qbqc
    - cyf
    - ssfj
    
- hosts: web
  tasks:
  - name: crateuser
    user: name={{item}}
    with_items:
    - alex20
    - alex21
    - alex22
~            
- hosts: web
  tasks:
  - name: crateuser
    user: name={{item}}
    with_items:
    - alex30
    - alex31
    - alex32
  - name: crategroup
    group: name={{item}}
    with_items:
    - wulaoshi20
    - wulaoshi21
    - wulaoshi22
~                

 

嵌套循環

- hosts: web
  tasks:
  - name: crategroup
    group: name={{item}}
    with_items:
    - wulaoshi30
    - wulaoshi31
    - wulaoshi32
  - name: createuser
    user: name={{item.name}} group={{item.group}}
    with_items:
    - {'name':alex40,'group':wulaoshi30}
    - {'name':alex41,'group':wulaoshi31}
    - {'name':alex42,'group':wulaoshi32}
    

 

template:sql

jinja2架構

 

redis安裝
- hosts: web tasks: - name: installredis yum: name=redis - name: copyfile template: src=/etc/redis.conf dest=/etc/redis.conf - name: start service: name=redis state=started 配置文件: bind {{ ansible_default_ipv4.address }}

 

copy和tamplate的區別dom

  • copy模塊不替代參數

  • template模塊替代參數

- hosts: web
  tasks:
  - name: installredis
    yum: name=redis
  - name: copyfile
    template: src=redis.conf dest=/etc/redis.conf
  - name: start
    service: name=redis state=started

 

ps:寫相對路徑: 在當前目錄下新建一個templates目錄,而後把文件放在templates目錄裏面

handlers(修改配置文件時用)

- hosts: web
  tasks:
  - name: installredis
    yum: name=redis
  - name: copyfile
    template: src=redis.conf dest=/etc/redis.conf
    tags: copyfile
    notify: restart
  - name: start
    service: name=redis state=started
  handlers:
  - name: restart
    service: name=redis state=restarted

 

回顧 playbook

傳參

條件判斷 when

循環 with_items item

嵌套循環 字典 經過點來取值

標籤 tags -t 來傳遞標籤

模板 template

handlers 不會執行, notify

roles

  • 目錄清晰

  • 能夠互相調用

roles文件夾

文件夾裏面是要建立的每個角色,每個角色一個文件夾

每個角色裏面都有tasks(必須的),templates,files,handlers,vars目錄

每一個目錄都要有main.yml文件,經過import_tasks來調用

其中templates文件夾中的文件能夠經過相對路徑來調用

其中files文件夾中的文件是否能夠經過相對路徑來調用?

mysql my

mariadb

Hadoop 大數據

setenforce 0 #用來臨時關閉selinux
iptables -F # 臨時關閉防火牆
/etc/selinux/config  # 永久關閉

 

 

用roles 來安裝nginx+uwsgi+mariadb + redis

相關文章
相關標籤/搜索