• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Fork me on GitHub
            隨筆 - 215  文章 - 13  trackbacks - 0
            <2017年12月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456


            專注即時通訊及網游服務端編程
            ------------------------------------
            Openresty 官方模塊
            Openresty 標準模塊(Opm)
            Openresty 三方模塊
            ------------------------------------
            本博收藏大部分文章為轉載,并在文章開頭給出了原文出處,如有再轉,敬請保留相關信息,這是大家對原創作者勞動成果的自覺尊重!!如為您帶來不便,請于本博下留言,謝謝配合。

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            相冊

            Awesome

            Blog

            Book

            GitHub

            Link

            搜索

            •  

            積分與排名

            • 積分 - 216758
            • 排名 - 118

            最新評論

            閱讀排行榜

            http://www.iyunv.com/thread-41970-1-1.html
            文件同步:
                其實在做openstack的運維對一些文件的同步其實是很繁瑣。有一個配置項或者一行代碼的源碼文件進行同步。那么現在我們就開始介紹saltstack的文件同步功能

            環境說明:操作系統版本:rhel6.5x64

            1、master配置同步根目錄
                 在開始saltstack的配置管理之前,要首先指定saltstack所有狀態文件的根目錄,在master上做如下操作
            ## 首先修改master的配置文件,指定根目錄,注意縮進全部使用兩個空格來代替Tab(python規范)## 確定指定的目錄是否存在,如果不存在,需要手動來創建目錄
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            [iyunv@controller1 ~]# vim /etc/salt/master 
            file_roots:
              base:
                - /srv/salt
              dev:
                - /srv/salt/dev/

            [iyunv@controller1 ~]# mkdir -p /srv/salt/dev
            [iyunv@controller1 ~]# ls -ld /srv/salt/dev
            drwxr-xr-x 2 root root 4096 Feb  3 21:49 /srv/salt/dev



            重啟master服務
            1
            2
            3
            [iyunv@controller1 ~]# service salt-master restart
            Stopping salt-master daemon:                               [  OK  ]
            Starting salt-master daemon:                               [  OK  ]



            2、介紹cp.get_file

               首先介紹cp.get_file,用來從master端下載文件到minion的指定目錄下,如下
            ## 在master上創建測試用的文件
            1
            2
            3
            [iyunv@controller1 ~]# echo 'This is test file with saltstack module to  cp.get_file' >/opt/getfile.txt        
            [iyunv@controller1 ~]# cat /opt/getfile.txt 
            This is test file with saltstack module to  cp.get_file



            將文件拷貝到master的同步根目錄下
            1
            [iyunv@controller1 ~]# cp /opt/getfile.txt /srv/salt/



            在master上執行文件下發
            1
            2
            3
            [iyunv@controller1 ~]# salt 'computer3' cp.get_file salt://getfile.txt /tmp/getfile.txt  
            computer3:
                /tmp/getfile.txt



            登錄到computer3上查看同步情況
            1
            2
            [iyunv@computer3 ~]# cat /tmp/getfile.txt 
            This is test file with saltstack module to  cp.get_file




            分發文件的一些屬性:
            (1)壓縮  gzip
            使用gzip的方式進行壓縮,數字越大,壓縮率就越高,9代表最大的壓縮率
            1
            2
            3
            [iyunv@controller1 ~]# salt 'computer8' cp.get_file salt://getfile.txt /tmp/getfile.txt gzip=9
            computer8:
                /tmp/getfile.txt




            (2)創建目錄 makedirs(當分發的位置在目標主機上不存在時,自動創建該目錄)
            1
            2
            3
            4
            5
            6
            [iyunv@controller1 ~]# salt 'computer8' cp.get_file salt://getfile.txt /tmp/srv/getfile.txt makedirs=True
            computer8:
                /tmp/srv/getfile.txt

            [iyunv@computer8 opt]# ll /tmp/srv/getfile.txt 
            -rw-r--r-- 1 root root 56 Feb  3 22:14 /tmp/srv/getfile.txt



            3、grains
               先介紹一下grains,這個接口的作用是在minion端的minion服務啟動時,調用這個接口,收集minion端的信息,這些信息數據可以在salt的其他模塊中直接使用,需要注意的是,這個接口只在minion端的minion服務啟動時被調用一次,所以收集的數據是靜態的,不會改變的,除非你重啟了minion端的服務

            grains的基本用法:
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            19
            20
            21
            22
            23
            24
            25
            26
            27
            28
            29
            30
            31
            32
            33
            34
            35
            36
            37
            38
            39
            40
            41
            42
            43
            44
            45
            46
            47
            48
            49
            50
            [iyunv@controller1 ~]# salt 'computer3' grains.ls
            computer3:
                - biosreleasedate
                - biosversion
                - cpu_flags
                - cpu_model
                - cpuarch
                - defaultencoding
                - defaultlanguage
                - domain
                - fqdn
                - fqdn_ip4
                - fqdn_ip6
                - gpus
                - host
                - hwaddr_interfaces
                - id
                - ip_interfaces
                - ipv4
                - ipv6
                - kernel
                - kernelrelease
                - localhost
                - manufacturer
                - master
                - mem_total
                - nodename
                - num_cpus
                - num_gpus
                - os
                - os_family
                - osarch
                - oscodename
                - osfinger
                - osfullname
                - osmajorrelease
                - osrelease
                - path
                - productname
                - ps
                - pythonpath
                - pythonversion
                - saltpath
                - saltversion
                - saltversioninfo
                - serialnumber
                - server_id
                - shell
                - virtual
                - zmqversion




            使用grains.items模塊列出所有可用grains的具體數據
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            19
            20
            21
            22
            23
            24
            25
            26
            27
            28
            29
            30
            31
            32
            33
            34
            35
            36
            37
            38
            39
            40
            41
            42
            43
            44
            45
            46
            47
            48
            49
            50
            51
            52
            53
            54
            55
            56
            57
            58
            59
            60
            61
            62
            63
            64
            65
            66
            67
            68
            69
            70
            71
            72
            73
            74
            75
            76
            77
            [iyunv@controller1 ~]# salt 'computer3' grains.items
            computer3:
              biosreleasedate: 08/28/2013
              biosversion: 2.10.0
              cpu_flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm arat dts tpr_shadow vnmi flexpriority ept vpid
              cpu_model: Intel(R) Xeon(R) CPU E7- 4820  @ 2.00GHz
              cpuarch: x86_64
              defaultencoding: UTF8
              defaultlanguage: en_US
              domain: 
              fqdn: computer3
              fqdn_ip4:
                  192.168.100.23
              fqdn_ip6:
              gpus:
                  {'model': 'MGA G200eW WPCM450', 'vendor': 'unknown'}
              host: computer3
              hwaddr_interfaces: {'lo': '00:00:00:00:00:00', 'tap002cf093-0c': 'fe:16:3e:cf:43:28', 'em4': 'f0:1f:af:90:38:65', 'eth1.2': 'f0:1f:af:90:37:fd', 'em3': 'f0:1f:af:90:38:63', 'brq8f15ee7f-54': 'f0:1f:af:90:37:fd', 'brqadf94242-74': 'f0:1f:af:90:37:fd', 'eth1.400': 'f0:1f:af:90:37:fd', 'eth1': 'f0:1f:af:90:37:fd', 'eth0': 'f0:1f:af:90:37:fb'}
              id: computer3
              ip_interfaces: {'lo': ['127.0.0.1'], 'tap002cf093-0c': [], 'em4': [], 'eth1.2': [], 'em3': [], 'brq8f15ee7f-54': [], 'brqadf94242-74': [], 'eth1.400': [], 'eth1': [], 'eth0': ['192.168.100.23']}
              ipv4:
                  127.0.0.1
                  192.168.100.23
              ipv6:
                  ::1
                  fe80::60f7:96ff:feab:3d44
                  fe80::f21f:afff:fe90:37fb
                  fe80::f21f:afff:fe90:37fd
                  fe80::f8e7:cdff:fe54:7d02
                  fe80::fc16:3eff:fecf:4328
              kernel: Linux
              kernelrelease: 2.6.32-431.el6.x86_64
              localhost: computer3
              manufacturer: Dell Inc.
              master: 192.168.100.200
              mem_total: 225995
              nodename: computer3
              num_cpus: 64
              num_gpus: 1
              os: RedHat
              os_family: RedHat
              osarch: x86_64
              oscodename: Santiago
              osfinger: Red Hat Enterprise Linux Server-6
              osfullname: Red Hat Enterprise Linux Server
              osmajorrelease:
                  6
                  5
              osrelease: 6.5
              path: /sbin:/usr/sbin:/bin:/usr/bin
              productname: PowerEdge M910
              ps: ps -efH
              pythonpath:
                  /usr/bin
                  /usr/lib64/python26.zip
                  /usr/lib64/python2.6
                  /usr/lib64/python2.6/plat-linux2
                  /usr/lib64/python2.6/lib-tk
                  /usr/lib64/python2.6/lib-old
                  /usr/lib64/python2.6/lib-dynload
                  /usr/lib64/python2.6/site-packages
                  /usr/lib64/python2.6/site-packages/gtk-2.0
                  /usr/lib/python2.6/site-packages
                  /usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info
              pythonversion: 2.6.6.final.0
              saltpath: /usr/lib/python2.6/site-packages/salt
              saltversion: 2014.1.10
              saltversioninfo:
                  2014
                  1
                  10
                  0
              serialnumber: XXXXXX
              server_id: 111111111
              shell: /bin/bash
              virtual: physical
              zmqversion: 4.0.5




              ping測試grains中os的值為RedHat的主機通信是否正常
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            [iyunv@controller1 ~]# salt -G 'os:RedHat' test.ping 
            computer5:
                True
            computer8:
                True
            computer6:
                True
            computer7:
                True
            computer4:
                True
            computer3:
                True




            查看uadoop2主機的ip地址,注意這里不是items噢,而是item
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            19
            20
            21
            22
            23
            24
            25
            [iyunv@controller1 ~]# salt '*' grains.item ipv4
            computer5:
              ipv4:
                  127.0.0.1
                  192.168.100.25
            computer7:
              ipv4:
                  127.0.0.1
                  192.168.100.27
            computer4:
              ipv4:
                  127.0.0.1
                  192.168.100.24
            computer3:
              ipv4:
                  127.0.0.1
                  192.168.100.23
            computer8:
              ipv4:
                  127.0.0.1
                  192.168.100.28
            computer6:
              ipv4:
                  127.0.0.1
                  192.168.100.26




            好了,在介紹了grains接口之后,接下來看下在cp模塊中如何簡單的使用grains的數據呢
            先確定os是什么版本
            1
            2
            3
            [iyunv@controller1 RedHat]# salt 'computer4'  grains.item os         
            computer4:
              os: RedHat



            1
            2
            3
            4
            5
            [iyunv@controller1 ~]# mkdir /srv/salt/RedHat/
            [iyunv@controller1 ~]# mv /srv/salt/getfile.txt  /srv/salt/RedHat/
            [iyunv@controller1 RedHat]# salt 'computer4' cp.get_file "salt://{{grains.os}}/getfile.txt" /opt/getfile.txt template=jinja
            computer4:
                /opt/getfile.txt



            4、目錄同步
                介紹cp.get_dir,get_dir與get_file的用法十分相似,用來將整個目錄分發到minions
            創建測試文件
            1
            2
            3
            4
            5
            6
            7
            [iyunv@controller1 ~]# mkdir /srv/salt/test_dir
            [iyunv@controller1 ~]# echo 'hello word !!' >>/srv/salt/test_dir/hello1.txt
            [iyunv@controller1 ~]# echo 'hello2 word !!' >>/srv/salt/test_dir/hello2.txt
            [iyunv@controller1 ~]# ll /srv/salt/test_dir/
            total 8
            -rw-r--r-- 1 root root 14 Feb  4 14:49 hello1.txt
            -rw-r--r-- 1 root root 15 Feb  4 14:49 hello2.txt



            測試分發: 執行目錄文件的分發,并使用壓縮傳輸
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            [iyunv@controller1 ~]# salt 'computer4' cp.get_dir salt://test_dir /tmp gzip=9 
            computer4:
                - /tmp/test_dir/hello1.txt
                - /tmp/test_dir/hello2.txt

            登錄到目標節點查看分發狀態:
            [iyunv@computer4 ~]# ll /tmp/test_dir/
            total 8
            -rw-r--r-- 1 root root 14 Feb  4 14:52 hello1.txt
            -rw-r--r-- 1 root root 15 Feb  4 14:52 hello2.txt




            5、數據的靈活變更

               在往下介紹之前,首先介紹一下salt的pillar接口,pillar是salt中比較重要的組件,跟grains有些相似,但是pillar相比于grains更加靈活,而且是動態的,數據可以隨時更新,只要你愿意的話。而grains只在minion啟動時采集一次數據,關于pillar官網描述如下,簡單翻譯一下,但不保證翻譯的到位,意思是說pillar是salt實現部署功能的最重要的組件,能夠為minions生成非常靈活的數據,這些數據可以被salt的其他的組件所使用。
            1
               The pillar interface inside of Salt is one of the most important components of a Salt deployment. Pillar is the interface used to generate arbitrary data for specific minions. The data generated in pillar is made available to almost every component of Salt.



            grains的基本用法
            (1)配置master
            1
            2
            3
            4
            5
            6
            7
            8
            9
            [iyunv@controller1 ~]# vim /etc/salt/master 
            pillar_roots:
              base:
                - /srv/pillar
            [iyunv@controller1 ~]# service salt-master restart
            Stopping salt-master daemon:                               [  OK  ]
            Starting salt-master daemon:                               [  OK  ]
            [iyunv@controller1 ~]# mkdir /srv/pillar
            [iyunv@controller1 ~]# mkdir /srv/pillar/user   //創建一個user的測試目錄




            (2)創建入口文件
            首先在/srv/pillar目錄中要有一個入口文件top.sls
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            [iyunv@controller1 pillar]# cat top.sls 
            base:
              'computer3':
                - date         ## 為uadoop2定義了一個屬性數據,引用了跟top.sls同目錄下的data.sls

              'computer4':
                - webserver    ## 為uadoop3定義了一個屬性數據,引用了跟top.sls同目錄下的web.sls

              '*':
                - user         ## 為所有節點定義了一個屬性數據,引用了/srv/pillar/user/init.sls
                               ## 這里指定的是一個目錄,salt會自動在top.sls文件中的引用目錄中尋找狀態文件
                               ## 因此會找到位于user目錄中的init.sls文件
                               ## 在測試請不要有任何的‘#’
            編寫其他兩個屬性:
            [iyunv@controller1 pillar]# cat date.sls 
            date: some date
            [iyunv@controller1 pillar]# cat webserver.sls 
            webserver: test_dir



            測試:
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            19
            20
            21
            22
            23
            24
            25
            26
            27
            28
            29
            30
            31
            32
            33
            34
            35
            36
            37
            38
            39
            40
            41
            42
            43
            44
            45
            46
            47
            48
            49
            50
            51
            52
            53
            54
            55
            56
            57
            58
            59
            60
            61
            # salt '*' pillar.items

            computer3:
                ----------
                date:
                    some date
                master:
                    ----------
                    auth_mode:
                        1
                    auto_accept:
                    ....省略N行...........
                user:
                    ----------
                    foway:
                        1200
                    kadefor:
                        1000
                    kora:
                        1000
            computer4:
                ----------
                master:
                    ----------
                    auth_mode:
                        1
                    auto_accept:
                        False
                    cachedir:
                        /var/cache/salt/master
                     .........省略N行..........
                user:
                    ----------
                    foway:
                        1200
                    kadefor:
                        1000
                    kora:
                        1000
                webserver:
                    test_dir
            computer5:
                ----------
                master:
                    ----------
                    auth_mode:
                        1
                    auto_accept:
                        False
                    cachedir:
                        /var/cache/salt/master
                        ......省略N行......
                user:
                    ----------
                    foway:
                        1200
                    kadefor:
                        1000
                    kora:
                        1000
                        ...............



            在master上遠程獲取剛剛定義的屬性
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            19
            20
            21
            22
            23
            24
            25
            26
            27
            28
            29
            30
            31
            32
            33
            34
            35
            36
            37
            38
            39
            40
            41
            42
            [iyunv@controller1 pillar]# salt 'computer3' pillar.items
            computer3:
                ----------
                date:
                    some date
                master:
                    ----------
                    auth_mode:
                        1
                    auto_accept:
                        False
                    cachedir:
                    ..........省略N行..........
                user:
                    ----------
                    foway:
                        1200
                    kadefor:
                        1000
                    kora:
                        1000
                        
            [iyunv@controller1 pillar]# salt 'computer4' pillar.items 
            computer4:
                ----------
                master:
                    ----------
                    auth_mode:
                        1
                    auto_accept:
                        False
                   ..........省略N行..........
                user:
                    ----------
                    foway:
                        1200
                    kadefor:
                        1000
                    kora:
                        1000
                webserver:
                    test_dir



            ## 可以看到剛剛為不同的minion定義的屬性已經同步到了各個minion上,從這個測試可以看出,使用pillar
            ## 我們可以為不同的minion或者不同的minion組定義不同的屬性,極其靈活。

            好了,在介紹了pillar接口之后,接下來看下在cp模塊中如何簡單的使用pillar定義的屬性數據呢

               我們可以利用之前定義的屬性來匹配不同的minion


            首先先同步一下pillar到每個節點上
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            [iyunv@controller1 ~]# salt '*' saltutil.refresh_pillar
            computer8:
                None
            computer4:
                None
            computer5:
                None
            computer6:
                None
            computer3:
                None
            computer7:
                None



            測試一下匹配
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            19
            20
            21
            22
            23
            24
            25
            26
            27
            28
            [iyunv@controller1 ~]# salt -I -v 'date:some date' test.ping                    
            Executing job with jid 20150204164730224160
            -------------------------------------------

            computer3:
                True
            [iyunv@controller1 ~]# salt -I -v 'webserver:test_dir' test.ping
            Executing job with jid 20150204165017170702
            -------------------------------------------

            computer4:
                True
            [iyunv@controller1 ~]# salt -I -v 'users:foway:1200' test.ping   
            Executing job with jid 20150204165053938046
            -------------------------------------------

            computer5:
                True
            computer6:
                True
            computer7:
                True
            computer3:
                True
            computer8:
                True
            computer4:
                True



            匹配computer3,然后在master上遠程分發文件到computer上去
            1
            2
            3
            4
            5
            6
            7
            [iyunv@controller1 salt]# salt -I -v 'webserver:test_dir' cp.get_dir "salt://{{pillar.webserver}}" /opt/ gzip=9 template=jinja
            Executing job with jid 20150204165518149257
            -------------------------------------------

            computer4:
                - /opt//test_dir/hello1.txt
                - /opt//test_dir/hello2.txt




            感覺saltstack的功能很強大,有沒有把你震驚到。繼續學習把。。。。。
            posted on 2016-12-21 14:39 思月行云 閱讀(1122) 評論(0)  編輯 收藏 引用 所屬分類: 服務器\Ops
            午夜精品久久久久久毛片| 国产高潮国产高潮久久久91| 久久狠狠一本精品综合网| 久久精品中文字幕一区| 国产精品99久久久久久宅男| 久久久久亚洲精品中文字幕 | 色妞色综合久久夜夜| 99国产精品久久久久久久成人热| 亚洲一区二区三区日本久久九| 久久精品一区二区三区中文字幕 | 狠狠色丁香婷婷久久综合| 久久99精品久久久久子伦| 欧美粉嫩小泬久久久久久久 | 久久综合亚洲鲁鲁五月天| 99久久国产综合精品麻豆| 久久精品亚洲福利| 久久亚洲精品无码AV红樱桃| 久久精品国产福利国产琪琪 | 999久久久免费国产精品播放| 久久久久综合中文字幕| 久久精品国产亚洲AV大全| 久久久久久久91精品免费观看| 久久久久国产一级毛片高清版| 日韩精品无码久久久久久| 久久www免费人成看国产片 | 国产亚州精品女人久久久久久 | 久久久亚洲精品蜜桃臀| 久久99精品久久久久久hb无码| 亚洲а∨天堂久久精品| 久久最新免费视频| 久久线看观看精品香蕉国产| 久久久久久国产精品免费无码| 香蕉aa三级久久毛片| 日本道色综合久久影院| 午夜欧美精品久久久久久久| 国产精品久久新婚兰兰| 亚洲国产香蕉人人爽成AV片久久| 久久久高清免费视频| 欧美精品福利视频一区二区三区久久久精品 | 久久久久99精品成人片| 一本久久a久久精品综合夜夜|