ansible 응용 프로그램
선언:
만약에 한 서버에 어떤 소프트웨어를 설치하라고 한다면 서버가 적으면 받아들일 수 있지만, 만약 수백 대의 서버가 있다면, 이렇게 하면 많은 시간을 소모하게 될 것이다. 이때 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.