ansible 응용 프로그램

53702 단어

선언:


만약에 한 서버에 어떤 소프트웨어를 설치하라고 한다면 서버가 적으면 받아들일 수 있지만, 만약 수백 대의 서버가 있다면, 이렇게 하면 많은 시간을 소모하게 될 것이다. 이때 Ansible는 이로 인해 생겨난다.어쨌든 Ansible에서 제공하는 많은 모듈은 매우 강력하다.

1. ansible


1. ansible는 무엇입니까
    (1)https://www.w3cschool.cn/automate_with_ansible/automate_with_ansible-atvo27or.html
2. ansible 환경 배포
    (2)https://www.w3cschool.cn/automate_with_ansible/automate_with_ansible-1khc27p1.html
    (3)https://www.cnblogs.com/gzxbkk/p/7515634.html
3. ansible 설치
    (1)http://www.linuxops.cc/2018/06/05/Ansible%E5%AE%89%E8%A3%85%E3%80%81%E9%85%8D%E7%BD%AE%E4%B8%8E%E5%B8%B8%E7%94%A8%E6%A8%A1%E5%9D%97%E4%BB%8B%E7%BB%8D/
4. 다른 몇 가지 시리즈 소개는 다음과 같이 참고할 수 있다. 중점은 ansible에 포함된 모듈 정보이다. 구체적으로 나는 개인적으로 모두 기억할 필요가 없다. 사용할 때 관련 모듈을 보면 된다.
  (1)http://www.cnblogs.com/f-ck-need-u/p/7576137.html#auto_id_2
  (2)http://www.zsythink.net/의 운영 기술 ->ansible
  (3)http://www.ansible.com.cn/index.html중간 문서
  (4)https://docs.ansible.com/ansible/latest/user_guide/playbooks.htmlansible playbooks 공식 가이드

2. 실전 실례


1. ansible 대량 설치 jdk(yml 파일)
- hosts: clickhouse_cluster_setup_beijing #hosts  
  remote_user: root # root 
  tasks:
    - name: copy jdk remote hosts
      copy: src=/root/usr/jdk-8u201-linux-x64.tar.gz dest=/usr/local/ backup=yes
    - name: tar jdk
      shell: chdir=/usr/local/ tar -xzvf jdk-8u201-linux-x64.tar.gz
    - name: create links
      file: src=/usr/local/jdk1.8.0_201 dest=/usr/local/java state=link
    - name: java_profile config
      shell: /bin/echo {{ item }} >> /etc/profile
      with_items:
        - export JAVA_HOME=/usr/local/java
        - export JRE_HOME=/usr/local/java/jre
        - export CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:\$JRE_HOME/lib:\$CLASSPATH
        - export PATH=\$JAVA_HOME/bin:\$PATH
    - name: take effect
      shell: source /etc/profile

여기서 주의하는 건 hosts 뒤에 있는 clickhouse_입니다.cluster_setup_beijing, 메인 제어 기기에 ansible를 설치한 후 생성된/etc/ansible/hosts 파일에 설치해야 할 기기 IP를 설정합니다. 예를 들어 다음과 같습니다.
clickhouse_cluster_setup_beijing :


1. ansible 대량 설치 clickhouse
여기에 약간의 어려운 점은template 모듈을 사용하여 자신이 설정한 jinja2 모듈에 따라 모든 기계에 설치하는 것입니다. jinja2에 대한 소개는 참고할 수 있습니다http://docs.jinkan.org/docs/jinja2/、http://www.zsythink.net/archives/3021그리고 클릭하우스에 대한 배치 지식을 알아야 왜 이러는지 알 수 있다.
config.xml.j2 템플릿 파일:
"1.0"?>


    
        
        trace
        /data/clickhouse/logs/server.log
        /data/clickhouse/logs/error.log
        1000M
        10
         
    
     
    8123
    9000

    
    

    
    
         
            
            /etc/clickhouse-server/server.crt
            /etc/clickhouse-server/server.key
            
            /etc/clickhouse-server/dhparam.pem
            none
            true
            true
            sslv2,sslv3
            true
        

         
            true
            true
            sslv2,sslv3
            true
            
            
                
                RejectCertificateHandler
            
        
    

    
    

    
    9009

    
    

    
    
    
    0.0.0.0

    
    
    
    

    
    

    

    4096
    3

    
    100

    
    

    
    8589934592

    
    5368709120


    
    /data/clickhouse/

    
    /data/clickhouse/tmp/

    
    /data/clickhouse/user_files/

    
    users.xml

    
    default

    
    

    
    default

    
    

    
    

    
    false

    
    "clickhouse_remote_servers" />

    
    /etc/clickhouse-server/metrika.xml

    
    "zookeeper-servers" optional="true" />

    
    "macros" optional="true" />


    
    3600


    
    3600

    
    60

    
    
    


    
    
        
        system
        query_log
toYYYYMM(event_date) 7500
system query_thread_log
toYYYYMM(event_date) 7500
*_dictionary.xml "clickhouse_compression"> /clickhouse/task_queue/ddl click_cost any 0 3600 86400 60 <default> max 0 60 3600 300 86400 3600 default> /data/clickhouse/format_schemas/

users.xml.j2 템플릿 파일:
"1.0"?>

    
    
        
        <default>
            
            10000000000

            
            0

            
            random
            
            1
        default>

        
        <readonly>
            10000000000
            0
            random
            <readonly>1readonly>
        readonly>
    

    
    
        
        <default>
            
            

            
            "networks" replace="replace">
                ::/0
            

            
            default

            
            default
        default>

        
        <readonly>
            
            "networks" replace="replace">
                ::1
                127.0.0.1
            
            readonly
            default
        readonly>
    

    
    
        
        <default>
            
            
                
                3600

                
                0
                0
                0
                0
                0
            
        default>
    

metrika.xml.j2 템플릿 파일:

    
        
            {for i in range(2,7,1) %}
            {% if i<10 %}
            
                true
                
                    {{shard_host_pre}}0{{i}}
                    {{shard_port}}
                    {{shard_user}}
                
            
            {else %}
            
                true
                
                    {{shard_host_pre}}{{i}}
                    {{shard_port}}
                    {{shard_user}}
            
            
            {%endif%}
            {% endfor %}
        
    

    
            {for i in range(1,6,1) %}
            {% if i<10 %}
            "{{i}}">
                {{zk_host}}0{{i}}
                {{zk_prot}}
            
            {else %}
            "{{i}}">
                {{zk_host}}{{i}}
                {{zk_prot}}
            
            {%endif%}
            {% endfor %}
    

    
    

    
        <case>
            10000000000
            0.01
            lz4
        case>
    

    
        ::/0
    

이곳은 내가 다섯 대의 기계를 설치해야 하기 때문에 배치가 비교적 간단하다.
yml 파일:
#ansible-playbook playbook.yml --list-hosts
#ansible-playbook /etc/ansible/install_file/clickhouse_install.yml --list-hosts
#https://www.cnblogs.com/f-ck-need-u/p/7571974.html
- hosts: clickhouse_cluster_setup_beijing #hosts  
  remote_user: root # root 
  vars: # 
    ck_version: 19.4.0.49-1.el7 #ck rpm module version
    #shard of ck variable parameter
    shard_port: 9000
    shard_user: default
    shard_host_pre: bjg-techcenter-appservice-appservice-push-push-clickhouse-
    shard_num: 5
    replica_num: 1
    #zk variable parameter
    zk_prot: 2181
    zk_host: bje-data-platform-zookeeper-

  tasks:
    - name: download and install curl #  curl
      shell: yum install -y curl
    - name: Download and execute the clickhouse installation script provided by packagecloud.io on the replica, distributed, chproxy machine #   clickhouse-server, clickhouse-client   replica   distributed  
      shell: curl -s https://packagecloud.io/install/repositories/altinity/clickhouse/script.rpm.sh | sudo bash
    - name: Install clickhouse-server, clickhouse-client on replica and distributed machines
      shell: sudo yum install -y clickhouse-server-{{ck_version}} clickhouse-client-{{ck_version}} clickhouse-compressor-{{ck_version}}
    - name: Batch modify startup scripts #  
      shell: sed -i 's/\/var\/log\/clickhouse-server/\/data\/clickhouse\/logs/g' /etc/init.d/clickhouse-server
    - name: write the metrika config file
      template: src=/etc/ansible/install_file/metrika.xml.j2 dest=/etc/clickhouse-server/metrika.xml backup=yes
    - name: write the config config file
      template: src=/etc/ansible/install_file/config.xml.j2 dest=/etc/clickhouse-server/config.xml backup=yes
    - name: write the user config file
      template: src=/etc/ansible/install_file/users.xml.j2 dest=/etc/clickhouse-server/users.xml backup=yes
    - name: Synchronous configuration #  clickhouse   login  
      shell: usermod -s /bin/bash clickhouse
    - name: Synchronous mkdir configuration
      shell: mkdir /data/clickhouse/logs -p
    - name: Synchronous chown configuration #  clickhouse   /data/clickhouse/  
      shell: chown clickhouse.clickhouse /data/clickhouse/ -R
    - name: service clickhouse-server restart # 
      shell: service clickhouse-server restart

여기는clickhose 설치를 위해 config가 필요합니다.xml\users.xml\metika.xml 파일, 메인 컨트롤러에 유니버설 모듈을 설정해서 모든 관리 기기에서 파일을 대량으로 만들고 쓰기 때문에, 제 예는 메인 컨트롤러의/etc/ansible/install_file/아래 세 개.j2 파일은 템플릿 문법에 따라 관리 기기의/etc/clickhouse-server/디렉터리에 기록됩니다.xml 파일에서 물론 구체적으로 자신의 실제 상황에 따라 모델을 수정하면 된다.
3. 정시 작업 삭제ck 집단 구역 데이터
yml 파일
- hosts: delete_ck_host #hosts  
  remote_user: root # root 
  vars: # 
    port: 9000
    tableName:
      - ck_local_qukan_report_cmd_11001
      - ck_local_qukan_report_cmd_under8
  tasks:
    - name: echo date
      command: date -d "2 days ago" +%Y-%m-%d
      register: date_output
    - name: echo partition
      command: clickhouse-client --host {{inventory_hostname}} --port {{port}} --database default --multiquery -q "SELECT DISTINCT formatDateTime(log_timestamp, '%F') AS partition FROM {{item}}"
      loop: "{{tableName}}"
      register: partitions
    - name: execute shell
      shell: clickhouse-client --host {{inventory_hostname}} --port {{port}} --database default --multiquery -q "alter table {{item[0]}} drop partition '{{item[1]}}'"
      when: item[1] < "{{date_output.stdout}}"
      with_nested:
        - "{{tableName}}"
        - "{{partitions.results[0].stdout_lines}}"


sh 파일
#!/bin/bash
echo "---------------------------------delete_ck.sh task start---------------------------------------------"
ansible-playbook /etc/ansible/install_file/task/delete_ck.yml
echo "---------------------------------delete_ck.sh task end--------------------------------------------"


#27 20 * * * /etc/ansible/install_file/task/delete_ck.sh

 
다음으로 전송:https://www.cnblogs.com/wynjauu/p/10702412.html

좋은 웹페이지 즐겨찾기