国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Ansible最佳實(shí)踐之Playbook使用過濾器處理網(wǎng)絡(luò)地址

這篇具有很好參考價(jià)值的文章主要介紹了Ansible最佳實(shí)踐之Playbook使用過濾器處理網(wǎng)絡(luò)地址。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

寫在前面


  • 使用過濾器檢查、驗(yàn)證和操作包含網(wǎng)絡(luò)信息的變量
  • 理解不足小伙伴幫忙指正

傍晚時(shí)分,你坐在屋檐下,看著天慢慢地黑下去,心里寂寞而凄涼,感到自己的生命被剝奪了。當(dāng)時(shí)我是個(gè)年輕人,但我害怕這樣生活下去,衰老下去。在我看來,這是比死亡更可怕的事。--------王小波


收集和處理網(wǎng)絡(luò)信息

標(biāo)準(zhǔn) setup 模塊可在多個(gè) play 開頭自動(dòng)收集事實(shí),從每個(gè)受管主機(jī)上收集大量與網(wǎng)絡(luò)相關(guān)的信息。

常用的網(wǎng)絡(luò)事實(shí):

  • ansible_facts[‘dns’][‘nameservers’]
  • ansible_facts[‘domain’]
  • ansible_facts[‘a(chǎn)ll_ipv4_addresses’]
  • ansible_facts[‘a(chǎn)ll_ipv6_addresses’]
  • ansible_facts[‘fqdn’]
  • ansible_facts[‘hostname’]

查看所有清單主機(jī)的完全限定名

---
- name: net_work
  hosts: all
  tasks:
    - name: print
      debug:
        msg:  "{{ ansible_facts['fqdn'] }}"
$

執(zhí)行測(cè)試

$ ansible-playbook network.yaml
.........
TASK [print] ***************************************************************************************************************
ok: [servera] => {
    "msg": "servera.lab.example.com"
}
ok: [serverb] => {
    "msg": "serverb.lab.example.com"
}
ok: [serverc] => {
    "msg": "serverc.lab.example.com"
}
ok: [serverd] => {
    "msg": "serverd.lab.example.com"
}
ok: [servere] => {
    "msg": "servere.lab.example.com"
}
ok: [serverf] => {
    "msg": "serverf.lab.example.com"
}

網(wǎng)絡(luò)信息過濾器

ipaddr 過濾器可用于處理和驗(yàn)證網(wǎng)絡(luò)相關(guān)的事實(shí):

  • 檢查IP地址的語(yǔ)法
  • 轉(zhuǎn)換VLSN子網(wǎng)掩碼為CIDR子網(wǎng)
  • 執(zhí)行子網(wǎng)數(shù)學(xué)運(yùn)算
  • 在網(wǎng)絡(luò)范圍內(nèi)找到下一個(gè)可用地址

使用要求:RHEL8系統(tǒng)使用ipaddr過濾器需要安裝 python3-netaddr 軟件包,該包提供Python模塊netaddr。

[student@workstation laomalS sudo yum install -y python3-netaddr

ipaddr 過濾器提供了操作和驗(yàn)證與網(wǎng)絡(luò)相關(guān)的事實(shí)功能。

可以用于檢查 IP 地址的語(yǔ)法,從 VLSN 子網(wǎng)掩碼轉(zhuǎn)換為 CIDR 子網(wǎng)前綴表示法,執(zhí)行子網(wǎng)計(jì)算,查找網(wǎng)絡(luò)范圍內(nèi)的下一個(gè)可用地址等。

在最簡(jiǎn)單的形式中,不帶參數(shù)的 ipaddr 過濾器接受單個(gè)值。如果值是 IP 地址,則過濾器返回 IP 地址,如果不是IP 地址,則過濾器將返回 False。

  • 如果該值為有效的P地址,則過濾器將返回地址。
  • 如果該值不是有效的IP地址,則過濾器返回False。
$ ansible servera -m debug -a 'msg={{ "175.25.250.50" | ipaddr}}'
servera | SUCCESS => {
    "msg": "175.25.250.50"
}
$ ansible servera -m debug -a 'msg={{ "175.25.250.50/24" | ipaddr}}'
servera | SUCCESS => {
    "msg": "175.25.250.50/24"
}
$ ansible servera -m debug -a 'msg={{ "175.25.250.500/24" | ipaddr}}'
servera | SUCCESS => {
    "msg": false
}

ipaddr過濾器接受參數(shù)值:

  • 如果該值包涵有效的IP地址,則返回有效的IP地址。
  • 如果所有項(xiàng)目均無效,則返回一個(gè)空列表。
$ ansible servera -m debug -a 'msg={{ "175.25.250.50/24" | ipaddr("netmask")}}'
servera | SUCCESS => {
    "msg": "255.255.255.0"
}
$
  • ipaddr 過濾器接受以下選項(xiàng):
  • address:驗(yàn)證輸入值是否為有效的 IP 地址,如果輸入中包含網(wǎng)絡(luò)前綴,其會(huì)被剝離。
  • net:驗(yàn)證輸入值是否為網(wǎng)絡(luò)范圍,并以 CIDR 格式返回。
  • host:確保 IP 地址符合等效的 CIDR 前綴格式。
  • prefix:驗(yàn)證輸入主機(jī)是否滿足主機(jī)/前綴或 CIDR 格式,并返回前綴。
  • host/prefix:驗(yàn)證輸入是否為網(wǎng)絡(luò)/前綴格式。
  • public 或 private:驗(yàn)證輸入 IP 地址或網(wǎng)絡(luò)范圍是否由 IANA 分別預(yù)留為公共或私有的范圍內(nèi)。
  • size:將輸入網(wǎng)絡(luò)范圍轉(zhuǎn)換為該范圍內(nèi)的 IP 地址數(shù)。
  • n:任何整數(shù)。將網(wǎng)絡(luò)范圍轉(zhuǎn)換為該范圍內(nèi)的第 N 個(gè)元素。負(fù)數(shù)返回從最后一個(gè)數(shù)的第 n 個(gè)元素。
  • network、netmask、broadcast:驗(yàn)證輸入主機(jī)是否滿足主機(jī)/前綴或CIDR格式,并將其分別轉(zhuǎn)換為網(wǎng)絡(luò)地址、子網(wǎng)掩碼或廣播地址。
  • subnet:驗(yàn)證輸入主機(jī)是否滿足主機(jī)/前綴或 CIDR 格式,并返回包含該主機(jī)的子網(wǎng)。
  • ipv4 ipv6:驗(yàn)證輸入是否有效的網(wǎng)絡(luò)范圍,并將它們分別轉(zhuǎn)換為 ipv4 和 ipv6 格式。
$ ansible servera -m debug -a 'msg={{ "175.25.250.50/24" | ipaddr("ipv6")}}'
servera | SUCCESS => {
    "msg": "::ffff:175.25.250.50/120"
}
$ ansible servera -m debug -a 'msg={{ "175.25.250.50/24" | ipaddr("subnet")}}'
servera | SUCCESS => {
    "msg": "175.25.250.0/24"
}
$ ansible servera -m debug -a 'msg={{ "175.25.250.50/24" | ipaddr("size")}}'
servera | SUCCESS => {
    "msg": "256"
}

使用插件收集網(wǎng)絡(luò)信息

查找 DNS 信息

dig 命令針對(duì) DNS 服務(wù)進(jìn)行查詢,并返回生成的記錄。dig 需要在控制節(jié)點(diǎn)上安裝 python3-dns 軟件包。

$ ansible servera -m debug -a 'msg={{  lookup("dig","servera.lab.example.com")}}'
servera | SUCCESS => {
    "msg": "172.25.250.10"
}
$ ansible servera -m debug -a 'msg={{  lookup("dig","example.com")}}'
servera | SUCCESS => {
    "msg": "172.25.254.254"
}
$ ansible servera -m debug -a 'msg={{  lookup("dig","com")}}'
servera | SUCCESS => {
    "msg": "NXDOMAIN"
}

dig 查找 DNS 服務(wù)器中是否存在提供 FQDN 的 A 記錄:

$ ansible servera -m debug -a 'msg={{  lookup("dig","example.com", "qtype=A")}}'
servera | SUCCESS => {
    "msg": "10 classroom.example.com."
}
$ ansible servera -m debug -a 'msg={{  lookup("dig","example.com", "@")}}'
servera | SUCCESS => {
    "msg": "172.25.254.254"
}

一個(gè) Demo

[student@workstation netfilters]$ cat ./tasks/main.yml
# Complete each task by setting the fact as the expected value.
# Replace ellipsis by the appropriate filter usage.
# All task but the last one should be using the 'ipaddr' filter.
# Use the lookup filter with the `dig` command for the last task

# Tasks make use of th gathered fact 'default_ipv4', and its keys 'address', 'network' and 'netmask'

- name: Task 1- Verify the 'ansible_default_ipv4.addresss' provided address is correctly formatted.
  set_fact:
    server_address: "{{ ansible_facts.default_ipv4.address | ipaddr }}"
- name: Task 2- Check 'server_address' value
  assert:
    that: "server_address == ansible_facts.default_ipv4.address"
    fail_msg: "'server_address' must be {{ ansible_facts.default_ipv4.address }}, but is {{ server_address }}"


- name: Task 3- Obtain the DNS name associated to the server IP address (reverse DNS)
  set_fact:
    address_dns: "{{ server_address | ipaddr('revdns') }}"
- name: Task 4- Check 'address_dns' value
  assert:
    that: "address_dns == '10.250.25.172.in-addr.arpa.'"
    fail_msg: "'address_dns' must be '10.250.25.172.in-addr.arpa.', but is {{ address_dns }}"


- name: Task 5- Obtain server's network/netmask
  set_fact:
    net_mask: "{{ ansible_facts.default_ipv4.network }}/{{ ansible_facts.default_ipv4.netmask }}"
- name: Task 6- Check 'net_mask' value
  assert:
    that: "net_mask == '172.25.250.0/255.255.255.0'"
    fail_msg: "'net_mask' must be '172.25.250.0/255.255.255.0', but is {{ net_mask }}"


- name: Task 7- Transform the network/netmask to the CIDR format
  set_fact:
    cidr: "{{ net_mask | ipaddr('net') }}"
- name: Task 8- Check 'cidr' value
  assert:
    that: "cidr == '172.25.250.0/24'"
    fail_msg: "'cidr' must be '172.25.250.0/24', but is {{ cidr }}"


- name: Task 9- Verify the server address actualy belong to the network/mask
  set_fact:
    address_in_range: "{{ server_address | ipaddr(net_mask) }}"
- name: Task 10- Check 'address_in_range' value
  assert:
    that: "address_in_range == server_address"
    fail_msg: "'address_in_range' must be {{ server_address }}, but is {{ address_in_range }}"


- name: Task 11- Obtain the broadcast address associated to the CIDR
  set_fact:
    broadcast: "{{ cidr | ipaddr('broadcast') }}"
- name: Task 12- Check 'broadcast' value
  assert:
    that: "broadcast == '172.25.250.255'"
    fail_msg: "'broadcast' must be '172.25.250.255', but is {{ broadcast }}"


- name: Task 13- DIG for the MX record of the domain 'example.com'
  set_fact:
    dig_record: "{{ lookup( 'dig', 'example.com.', 'qtype=MX') }}"
- name: Task 14- Check 'dig_record' value
  assert:
    that: "dig_record == '10 classroom.example.com.'"
    fail_msg: "'dig_record' must be '10 classroom.example.com.', but is '{{ dig_record }}'"

[student@workstation data-netfilters]$ ansible-playbook  site.yml

PLAY [Tasks for netfilter guided exercise] *****************************************************************************

TASK [Gathering Facts] *************************************************************************************************
ok: [servera.lab.example.com]

TASK [netfilters : Task 1- Verify the 'ansible_default_ipv4.addresss' provided address is correctly formatted.] ********
ok: [servera.lab.example.com]

TASK [netfilters : Task 2- Check 'server_address' value] ***************************************************************
ok: [servera.lab.example.com] => {
    "changed": false,
    "msg": "All assertions passed"
}

TASK [netfilters : Task 3- Obtain the DNS name associated to the server IP address (reverse DNS)] **********************
ok: [servera.lab.example.com]

TASK [netfilters : Task 4- Check 'address_dns' value] ******************************************************************
ok: [servera.lab.example.com] => {
    "changed": false,
    "msg": "All assertions passed"
}

TASK [netfilters : Task 5- Obtain server's network/netmask] ************************************************************
ok: [servera.lab.example.com]

TASK [netfilters : Task 6- Check 'net_mask' value] *********************************************************************
ok: [servera.lab.example.com] => {
    "changed": false,
    "msg": "All assertions passed"
}

TASK [netfilters : Task 7- Transform the network/netmask to the CIDR format] *******************************************
ok: [servera.lab.example.com]

TASK [netfilters : Task 8- Check 'cidr' value] *************************************************************************
ok: [servera.lab.example.com] => {
    "changed": false,
    "msg": "All assertions passed"
}

TASK [netfilters : Task 9- Verify the server address actualy belong to the network/mask] *******************************
ok: [servera.lab.example.com]

TASK [netfilters : Task 10- Check 'address_in_range' value] ************************************************************
ok: [servera.lab.example.com] => {
    "changed": false,
    "msg": "All assertions passed"
}

TASK [netfilters : Task 11- Obtain the broadcast address associated to the CIDR] ***************************************
ok: [servera.lab.example.com]

TASK [netfilters : Task 12- Check 'broadcast' value] *******************************************************************
ok: [servera.lab.example.com] => {
    "changed": false,
    "msg": "All assertions passed"
}

TASK [netfilters : Task 13- DIG for the MX record of the domain 'example.com'] *****************************************
ok: [servera.lab.example.com]

TASK [netfilters : Task 14- Check 'dig_record' value] ******************************************************************
ok: [servera.lab.example.com] => {
    "changed": false,
    "msg": "All assertions passed"
}

PLAY RECAP *************************************************************************************************************
servera.lab.example.com    : ok=15   changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

[student@workstation data-netfilters]$ cat site.yml
- name: Tasks for netfilter guided exercise
  hosts: servera.lab.example.com
  roles:
    - role: netfilters

[student@workstation data-netfilters]$

博文參考

《DO447》文章來源地址http://www.zghlxwxcb.cn/news/detail-617750.html

到了這里,關(guān)于Ansible最佳實(shí)踐之Playbook使用過濾器處理網(wǎng)絡(luò)地址的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 異常過濾器—MVC中異常過濾器使用

    異常過濾器—MVC中異常過濾器使用

    異常過濾器( Exception Filters )是 ASP.NET Core 中用于處理全局異常的機(jī)制。它們?cè)试S你在發(fā)生異常時(shí)捕獲、處理和記錄異常,并提供自定義的異常處理邏輯。異常過濾器在整個(gè)應(yīng)用程序范圍內(nèi)生效,可以用于處理各種異常情況。用于實(shí)現(xiàn)常見的錯(cuò)誤處理策略,沒有之前和之后事

    2024年02月13日
    瀏覽(91)
  • 操作過濾器—MVC中使用操作過濾器實(shí)現(xiàn)JWT權(quán)限認(rèn)證

    操作過濾器—MVC中使用操作過濾器實(shí)現(xiàn)JWT權(quán)限認(rèn)證

    上一篇文章分享了授權(quán)過濾器實(shí)現(xiàn)JWT進(jìn)行鑒權(quán),文章鏈接:授權(quán)過濾器—MVC中使用授權(quán)過濾器實(shí)現(xiàn)JWT權(quán)限認(rèn)證,接下來將用操作過濾器實(shí)現(xiàn)昨天的JWT鑒權(quán)。 ? 與授權(quán)過濾器大部分一樣,只是執(zhí)行的時(shí)機(jī)和繼承的接口有所不同。操作過濾器是在Action執(zhí)行的前和后進(jìn)行調(diào)用執(zhí)行

    2024年02月13日
    瀏覽(89)
  • 結(jié)果過濾器—MVC項(xiàng)目中結(jié)果過濾器(Result Filter)使用

    結(jié)果過濾器—MVC項(xiàng)目中結(jié)果過濾器(Result Filter)使用

    結(jié)果過濾器( ResultFilter ),是對(duì)執(zhí)行的Action結(jié)果進(jìn)行處理的一種AOP思想,適用于任何需要直接環(huán)繞 View 或格式化處理的邏輯。結(jié)果過濾器可以 替換或更改 Action 結(jié)果 。在 IActionResult 執(zhí)行的前后執(zhí)行,使用它能夠控制Action的執(zhí)行結(jié)果,比如:格式化結(jié)果等。需要注意的是,它只

    2024年02月12日
    瀏覽(99)
  • springboot使用過濾器

    過濾器是處于客戶端與服務(wù)器資源文件之間的一道過濾網(wǎng),幫助我們過濾一些不符合要求的請(qǐng)求。通常用作 Session校驗(yàn),判斷用戶權(quán)限。 使用過濾器很簡(jiǎn)單,只需要實(shí)現(xiàn)Filter類,然后重寫它的3個(gè)方法即可。 init方法:程序啟動(dòng)調(diào)用Filter的init()方法(永遠(yuǎn)只調(diào)用一次);在容器中

    2024年02月15日
    瀏覽(93)
  • Vue過濾器基本使用

    在Vue 2中,你可以使用 filters 選項(xiàng)來定義過濾器。以下在組件中定義和使用過濾器的簡(jiǎn)單例子: 1、app.vue 使用methods實(shí)現(xiàn): 2、使用filters配合computed計(jì)算屬性實(shí)現(xiàn): 3、引入其他組件FilterFix.vue實(shí)現(xiàn): app.vue FilterFix.vue main.js

    2024年02月09日
    瀏覽(93)
  • 資源過濾器—MVC中使用資源過濾器實(shí)現(xiàn)不執(zhí)行Action方法體讀取緩存信息返回

    資源過濾器—MVC中使用資源過濾器實(shí)現(xiàn)不執(zhí)行Action方法體讀取緩存信息返回

    上兩篇文章分享了過濾器實(shí)現(xiàn)JWT進(jìn)行鑒權(quán),分別是通過授權(quán)過濾器和操作過濾器實(shí)現(xiàn),這兩個(gè)過濾器也是最常用的。文章鏈接:授權(quán)過濾器—MVC中使用授權(quán)過濾器實(shí)現(xiàn)JWT權(quán)限認(rèn)證,操作過濾器—MVC中使用操作過濾器實(shí)現(xiàn)JWT權(quán)限認(rèn)證,接下來將簡(jiǎn)單的談?wù)勝Y源過濾器在MVC中如何

    2024年02月13日
    瀏覽(92)
  • 網(wǎng)關(guān)Gateway過濾器的使用

    網(wǎng)關(guān)Gateway過濾器的使用

    前言: 最近在學(xué)習(xí)微服務(wù)相關(guān)的知識(shí),看了黑馬的相關(guān)課程,將關(guān)于Gateway過濾器的知識(shí)又總結(jié)了一些,希望能幫到各位小伙兒們以及加深下自己的印象?? 如果文章有什么需要改進(jìn)的地方還請(qǐng)大佬多多指教?? 小威先感謝大家的支持了?? Gateway網(wǎng)關(guān)的過濾器分為兩種,一種是

    2023年04月09日
    瀏覽(20)
  • Vue中過濾器如何使用?

    Vue中過濾器如何使用?

    過濾器是對(duì)即將顯示的數(shù)據(jù)做進(jìn)?步的篩選處理,然后進(jìn)?顯示,值得注意的是過濾器并沒有改變?cè)瓉?的數(shù)據(jù),只是在原數(shù)據(jù)的基礎(chǔ)上產(chǎn)?新的數(shù)據(jù)。過濾器分全局過濾器和本地過濾器(局部過濾器)。 目錄 全局過濾器 本地過濾器 過濾器傳參 串聯(lián)過濾器 下?定義?個(gè)全局

    2024年02月10日
    瀏覽(22)
  • python使用布隆過濾器篩選數(shù)據(jù)

    它是一種獨(dú)特的數(shù)據(jù)結(jié)構(gòu),用以判斷:一個(gè)數(shù)據(jù) 可能存在 或 一定不存在 算法思路: 開一個(gè)指定長(zhǎng)度的數(shù)組,將所有的元素值設(shè)為0 添加元素時(shí),執(zhí)行hash,得到多個(gè)位置下標(biāo),將數(shù)組對(duì)應(yīng)位置設(shè)置為1 檢查元素是否存在時(shí),執(zhí)行hash,得到多個(gè)位置下標(biāo),查看數(shù)組中對(duì)應(yīng)下標(biāo)

    2023年04月08日
    瀏覽(25)
  • springboot中使用filter過濾器

    springboot中使用filter過濾器

    filter過濾器其實(shí)是JavaEE中的規(guī)范,JavaWeb中的三大組件是filter過濾器、listener監(jiān)聽器,servlet服務(wù)。 過濾器的作用就是把請(qǐng)求攔截下來,從而對(duì)請(qǐng)求進(jìn)行一些特殊操作,比如檢驗(yàn)用戶是否登錄,判斷權(quán)限,設(shè)置編碼格式、敏感字符處理等。 filter過濾器中有三個(gè)方法: 分別是初始

    2024年02月08日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包