关于ansible:如何在-Rocky-Linux-8-上安装-Ansible-自动化工具

Ansible 是由 RedHat 资助的开源收费自动化工具。应用 Ansible,咱们能够治理和配置 Linux 和 Windows 零碎,而无需装置任何代理。它基本上能够在 SSH 协定上应用,并且能够一次配置数百台服务器。在 Ansible 术语中,装置 Ansible 的零碎称为管制主机/节点,而由 Ansible 治理的零碎称为托管主机。 在这篇文章中,咱们将探讨如何在 Rocky Linux 8 上装置最新版本的 Ansible。 试验筹备Control Node – 192.168.1.170 – Minimal Rocky Linux 8Managed Host 1 – 192.168.1.121 – Ubuntu 20.04 LTSManaged Host 2 – 192.168.1.122 – Rocky Linux 8sysops user with admin rights装置 Ansible1) 更新零碎要更新 rocky linux 8,请运行 dnf 命令 $ sudo dnf update -y重启零碎 $ sudo reboot2) 配置 EPEL 存储库Ansible 包及其依赖项在默认的 Rocky Linux 8 包存储库中不可用。因而,要通过 dnf 装置 ansible,咱们必须先配置 EPEL 存储库。 ...

March 3, 2023 · 2 min · jiezi

关于ansible:Linux虚拟机上离线安装ansible-awx亲测成功

Linux虚拟机上离线装置ansible awx_亲测胜利可自行去下载相干包,也能够给我评论留言,我发给大家 ansible awx离线装置----虚构机上安装 胜利-----------------------------python -V2.7.5tar -zxvf setuptools-20.0.tar.gzcd setuptools-20.0python setup.py installtar -zxvf pycrypto-2.6.1.tar.gz cd pycrypto-2.6.1/python setup.py install报错时: error: no acceptable C compiler found in $PATH有网机器下载yum install --downloadonly --downloaddir=/data/ansible/gcc gccyum install --downloadonly --downloaddir=/data/ansible/g++ gcc-c++cd gcc/rpm -ivh *.rpmcd g++rpm -ivh *.rpm报错时 src/MD2.c:31:20: 致命谬误:Python.h:没有那个文件或目录yum install python-devel -yTips :若python版本曾经为2.6或以上,则不须要再重装python,只是还须要装置python开发包:python-dev(有的操作系统下为python-devel)yum install --downloadonly --downloaddir=/data/ansible/python-devel python-develcd python-devel/rpm -ivh *.rpm而后再执行cd pycrypto-2.6.1/python setup.py installtar -zxvf yaml-0.1.5.tar.gz cd yaml-0.1.5/./configure --prefix=/usr/localmake --jobs=`grep processor /proc/cpuinfo | wc -l`make installhttps://pypi.org/simple/pyyaml/tar -zxvf PyYAML-3.11.tar.gzcd PyYAML-3.11/python setup.py installtar -zxvf MarkupSafe-0.9.3.tar.gz cd MarkupSafe-0.9.3/python setup.py installtar -zxvf Jinja2-2.7.3.tar.gz cd Jinja2-2.7.3/python setup.py installtar -zxvf ecdsa-0.11.tar.gz cd ecdsa-0.11/python setup.py installtar -zxvf paramiko-1.15.1.tar.gz cd paramiko-1.15.1/python setup.py installtar -zxvf simplejson-3.6.5.tar.gz cd simplejson-3.6.5/python setup.py installtar -zxvf pycparser-2.20.tar.gzcd pycparser-2.20python setup.py installtar -zxvf ipaddress-1.0.23.tar.gz cd ipaddress-1.0.23python setup.py installtar -zxvf enum34-1.1.10.tar.gz cd enum34-1.1.10python setup.py installtar -zxvf six-1.15.0.tar.gzcd six-1.15.0python setup.py installhttps://pypi.python.org/simple/cryptography/tar -zxvf cryptography-2.9.2.tar.gz cd cryptography-2.9.2python setup.py install报错时: c/_cffi_backend.c:15:17: 致命谬误:ffi.h:没有那个文件或目录yum install --downloadonly --downloaddir=/data/ansible/libffi-devel libffi-develcd libffi-devel/rpm -ivh *.rpmyum install --downloadonly --downloaddir=/data/ansible/openssl-devel openssl-develcd openssl-develrpm -ivh *.rpmtar -zxvf cffi-1.14.0.tar.gz cd cffi-1.14.0python setup.py installhttps://releases.ansible.com/ansible/wget https://releases.ansible.com/ansible/ansible-2.9.7.tar.gztar -zxvf ansible-2.9.7.tar.gzcd ansible-2.9.7/python setup.py installansible --versionpip -Vtar -zxvf pip-20.1.1.tar.gz cd pip-20.1.1python setup.py installpip -Vpip download docker -d /data/ansible/dockerpip install --ignore-installed requests --no-index --find-links=file:/data/ansible/docker docker pip download docker-compose -d /data/ansible/docker_compose pip install --no-index --find-links=file:/data/ansible/docker_compose docker_composenetstat -tpnl查看端口占用: 80tar -zxvf awx-13.0.0.tar.gz 须要python3 没胜利cd awx-11.0.0/installer/ vi inventory 能够批改用户名明码admin_user=adminadmin_password=passwordansible-playbook -i inventory install.ymltar -zxvf 11.0.0.tar.gz 胜利装置cd awx-11.0.0/installer/ ansible-playbook -i inventory install.yml浏览器拜访: http://192.168.31.105/报错: A server error has occurred.vim inventory 批改postgres_data_dir="/data/ansible/pgdocker"#host_port_ssl=443docker_compose_dir="/data/ansible/awxcompose"导入清单docker exec -it awx_task /bin/bashcat /data/hosts [docker-host]192.168.31.236 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=root新建一个docker 清单名awx-manage inventory_import --source=/data/hosts --group-filter=docker-host --inventory-name=docker --keep-vars把容器删除后再试docker stop awx_task awx_web awx_postgres awx_redis awx_memcacheddocker rm awx_task awx_web awx_postgres awx_redis awx_memcached想法: 装置好的awx,配置好所有软件脚本,而后把容器导出来,到其余机器运行时,各种谬误,只有awx_postgres能跑起来. ...

November 22, 2022 · 3 min · jiezi

关于ansible:Linux离线安装Awx

Linux离线装置Awx可自行去下载相干包,也能够给我评论留言,我发给大家 wget https://github.com/ansible/awx/archive/1.0.7.tar.gz 失败https://github.com/ansible/awx/archive/11.0.0.tar.gz 在虚拟机上胜利启动wget https://github.com/ansible/awx/archive/13.0.0.tar.gz 须要python3tar -zxvf 11.0.0.tar.gz cd awx-11.0.0/installer/ ansible-playbook -i inventory install.yml留神: 有可能端口占用了docker stop awx_task awx_web awx_postgres awx_redis awx_memcached docker stop memcached rabbitmq postgresdocker rm awx_task awx_web awx_postgres awx_redis awx_memcached docker rm memcached rabbitmq postgres离线装置下载pip download docker -d /data/docker装置pip install --ignore-installed requests --no-index --find-links=file:/data/docker dockerpip download docker-compose -d /data/docker_compose pip install --no-index --find-links=file:/data/docker_compose docker_compose在线装置pip install dockerpip install docker-composepip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com docker-compose==1.16.0pip3 install requestspip3 install dockerpip3 install docker-composedocker exec -it awx_task /bin/bashcd /var/lib/awx/projects/ansible-for-devops/cat main.yml ---- name: test date cmd hosts: all connection: local tasks: - name: Check the ping on the server. command: datecat uploadfile.yml- name: file upload hosts: all connection: paramiko tasks: - name: 创立目录 shell: mkdir -p /data/iot - name: upload file. copy: src={{path}} dest=/data/iot 导入清单docker exec -it awx_task /bin/bashawx-manage inventory_import --source=/etc/ansible/hosts --group-filter=iot-test --inventory-name=iot --keep-vars--source 指定inventory文件--group-filter 从文件中通过组名过滤--host-filter 通过host name过滤--inventory-name 导入到指定名称资产清单--inventory-id 导入到指定ID的资产清单# name 和 id 选一个--overwrite 笼罩主机和组,默认不笼罩--overwrite-vars 笼罩主机变量--keep-vars 放弃主机变量--enabled-value 导入的主机状态是否激活默认激活cat hosts [iotdb-host]# 在[]中的,为一组,iot-test为组名,前面会用到#139.9.130.81 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=abcd_2020114.116.194.17 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=abcd_2019192.168.140.102 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=abcd123tower-manage inventory_import --source=/data/hosts --group-filter=iotdb-host --inventory-name=iotdb --keep-vars

November 21, 2022 · 1 min · jiezi

关于ansible:将-Ansible-和-Jenkins-与-Terraform-集成以构建强大的基础架构

市场上有许多配置管理工具可用于创立齐全自动化和齐全配置的基础架构,其中弱小的工具之一是Ansible。 Ansible是一个开源工具,能够用它来进行软件供给、配置管理和应用程序部署。它可接管一个新创建的服务器实例并依据称为Playbook剧本来装置、配置所需的软件。 装置Ansible请参阅此页面以获取无关在首选操作系统上装置Ansible的具体指南。 新个性增加了一种在主机操作系统上保留.pem私钥的办法Ansible playbook用于配置内部卷应用Jenkins进行继续集成让咱们开始增加代码以将.pem密钥文件保留到本地计算机。这样,通过应用这个密钥,咱们就能够应用SSH登录到近程实例。 保留.pem密钥文件以下代码会将主动生成的EC2私钥保留为咱们本地机器中的.pem文件。 resource "tls_private_key" "ec2_private_key" { algorithm = "RSA" rsa_bits = 4096 provisioner "local-exec" { command = "echo '${tls_private_key.ec2_private_key.private_key_pem}' > ~/Desktop/${var.key_name}.pem" }}在这里,私钥文件将保留在桌面目录中。然而,默认状况下,此文件会以公共拜访权限保留在本地计算机上。当初,要应用此密钥登录EC2实例,咱们须要将密钥设为公有。咱们能够通过授予.pem密钥文件较少的权限来实现这一点。 resource "null_resource" "key-perm" { depends_on = [ tls_private_key.ec2_private_key, ] provisioner "local-exec" { command = "chmod 400 ~/Desktop/${var.key_name}.pem" }}当初,咱们的密钥已胜利保留到本地机器并筹备好用于登录。 Ansible-playbook自动化配置在之前的版本中,咱们应用了一个shell脚本文件(task1/vol.sh)来主动配置内部卷。然而,配置服务器最无效的办法是应用配置管理工具。 Ansible提供了一种编写playbook剧本的办法来为咱们配置服务器。让咱们看一下ansible-playbook,它将配置内部卷以使其能够应用。 这个剧本被命名为master.yml - hosts: all become: truetasks:- name: Install httpd command: yum install httpd -y become: yes become_method: sudo become_user: root- name: Start httpd command: systemctl start httpd become: yes become_method: sudo become_user: root- name: Enable httpd command: systemctl enable httpd become: yes become_method: sudo become_user: root- name: Install git command: yum install git -y become: yes become_method: sudo become_user: root- name: Create a new primary partition with a size of 1GiB parted: device: /dev/xvdc number: 1 state: present part_end: 500MiB- name: Format the partition, mount it to the /var/www/html shell: | mkfs -t ext4 /dev/xvdc1 mount /dev/xvdc1 /var/www/html- name: Copy the code from github to the /var/www/html shell: | cd /var/www/html git clone https://github.com/cankush625/Web.git让咱们理解这个文件的作用。在terraform代码中会应用以下命令执行此playbook剧本: ...

October 21, 2022 · 2 min · jiezi

关于ansible:Ansible基础入门

Ansible根底概述Ansible是一个自动化对立配置管理工具,自动化次要体现在Ansible集成了丰盛模块以及性能组件,能够通过一个命令实现一系列的操作,进而能缩小重复性的工作和保护老本,能够进步工作效率。 同类型软件比照AnsibleSaltstackpuppet比照 Puppet Ansible Saltstack 开发语言 ruby python python 近程执行性能 没有 有、串行 有、并行 客户端 没有 没有 有 架构 SSh C/S、也反对SSh Ansible的性能1.近程执行批量执行近程命令,能够对多台主机进行近程操作 2.配置管理批量配置软件服务,能够进行自动化形式配置,服务的对立配置管理,和启停 3.事件驱动通过Ansible的模块,对服务进行不同的事件驱动比方:1)批改配置后重启2)只批改配置文件,不重启3)批改配置文件后,从新加载4)近程启停服务治理 4.治理私有云通过API接口的形式治理私有云,不过这方面做的不如saltstack.saltstack自身能够通过saltcloud治理各大云厂商的云平台。 5.二次开发因为语法是Python,所以便于运维进行二次开发。 6.工作编排能够通过playbook的形式来对立治理服务,并且能够应用一条命令,实现一套架构的部署 7.跨平台,跨零碎简直不受到平台和零碎的限度,比方装置apache和启动+服务 在Ubuntu上装置apache服务名字叫apache2在CentOS上装置apache服务名字叫httpd 在CentOS6上启动服务器应用命令:/etc/init.d/nginx start在CentOS7上启动服务器应用命令:systemctl start nginx1.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.Ansible架构 1、连贯插件connection plugins用于连贯主机 用来连贯被治理端 2、外围模块core modules连贯主机实现操作, 它依赖于具体的模块来做具体的事件 3、自定义模块custom modules依据本人的需要编写具体的模块 4、插件plugins实现模块性能的补充 5、剧本playbookansible的配置文件,将多个工作定义在剧本中,由ansible主动执行 6、主机清单inventor定义ansible须要操作主机的范畴 最重要的一点是 ansible是模块化的 它所有的操作都依赖于模块 Ansible执行流程1.Ansible读取playbook剧本,剧本中会记录对哪些主机执行哪些工作。 2.首先Ansible通过主机清单找到要执行的主机,而后调用具体的模块。 3.其次Ansible会通过连贯插件连贯对应的主机并推送对应的工作列表。 4.最初被治理的主机会将Ansible发送过去的工作解析为本地Shell命令执行。 Ansible装置部署主机名 WanIP LanIP 角色 m01 10.0.0.61 172.16.1.61 Ansible管制端 web01 10.0.0.7 172.16.1.7 被控端 web02 10.0.0.8 172.16.1.8 被控端 装置Ansible 1.装置ansible 要有epel源[root@m01 ]# yum install -y ansible ...

July 19, 2022 · 2 min · jiezi

关于ansible:使用-ansible-查看磁盘使用空间

- hosts: 1.1.1.1 gather_facts: no tasks: - name: Collect only facts about hardware setup: gather_subset: - 'hardware' - name: ensure disk at least 10% free space assert: that: - mount.size_available > mount.size_total|float * 0.1 fail_msg: "Disk avail: {{(mount.size_available/1000000000.0 )| round(1,'common') }}GB Disk total: {{(mount.size_total / 1000000000.0) | round(1,'common') }}GB Disk space is near full!!! " success_msg: "Disk avail: {{(mount.size_available/1000000000.0 )| round(1,'common') }}GB Disk total: {{(mount.size_total / 1000000000.0) | round(1,'common') }}GB" vars: mount: "{{ ansible_mounts | selectattr('device', 'equalto', '/dev/vdb1') | list | first }}"# https://gist.github.com/mahemoff/07c0c3427aa3eb3c0abc07f76fc68279# https://gist.github.com/goodc0re/cbaffab5674cc9324ecb591ab350e564# https://stackoverflow.com/questions/26981907/using-ansible-to-manage-disk-space如果磁盘空间有余10%,运行后果如下: ...

January 19, 2022 · 1 min · jiezi

关于ansible:ansible-使用

1. hosts文件 [test-hosts]192.168.32.128192.168.32.129192.168.32.130[all:vars]ansible_ssh_user=testansible_sudo_pass='123456'2. ping 模块 ansible -i conf/hosts test-hosts -b --become-user=root -m ping3. shell 模块 ansible -i conf/hosts test-hosts -b --become-user=root -m shell -a 'sh /tmp/1.sh'4. copy 模块 ansible -i conf/hosts test-hosts -b --become-user=root -m copy -a 'src=package/1.txt dest=/tmp owner=test group=test mode=0755'5. playbook 编辑 - name: copy file hosts: test-hosts gather_facts: no vars: remote_user: test become: yes become_user: root become_method: sudo become_pass: 123456 tasks: -name: copy script file copy: src: "/tmp/1.sh" dest: "/tmp" owner: root group: root mode: 0644 -name: run shell script shell: | sh /tmp/1.sh > /tmp/1.log

November 2, 2021 · 1 min · jiezi

关于ansible:用ansible脚本安装rancher和k8s集群

一、服务器布局ipfqdnhostnameconfig192.168.126.10rancher.k8s.example.comrancher治理负载4-4192.168.126.11jwxt.k8s.example.comjwxt利用负载4-4192.168.126.12harbor.k8s.example.comharbor4-8192.168.126.20rancher1.k8s.example.comrancher14-8192.168.126.21rancher2.k8s.example.comrancher24-8192.168.126.22rancher3.k8s.example.comrancher34-8192.168.126.30k8s01.k8s.example.comk8s014-8192.168.126.31k8s02.k8s.example.comk8s024-8192.168.126.32k8s03.k8s.example.comk8s034-8192.168.126.40docker01.k8s.example.comdocker0112-16192.168.126.41docker02.k8s.example.comdocker0212-16192.168.126.42docker03.k8s.example.comdocker0312-16192.168.126.50nfs.k8s.example.comnfs4-4192.168.126.51oracle.k8s.example.comoracle8-32以下所有操作都已配置好eams用户,且eams用户具备sudo权限 yum install sudo -yuseradd eamsecho abc123 | passwd --stdin eamsusermod eams -aG wheelvim /etc/sudoersNOPASSED:ALL二、配置ansible环境以下所有操作都在rancher(nginx负载)的主机上进行2.1 批改hosts文件sudo vim /etc/hostshosts文件(示例)127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.126.10 rancher.k8s.example.com rancher192.168.126.11 app.k8s.example.com app192.168.126.12 harbor.k8s.example.com harbor192.168.126.20 rancher1.k8s.example.com rancher1192.168.126.21 rancher2.k8s.example.com rancher2192.168.126.22 rancher3.k8s.example.com rancher3192.168.126.30 k8s01.k8s.example.com k8s01192.168.126.31 k8s02.k8s.example.com k8s02192.168.126.32 k8s03.k8s.example.com k8s03192.168.126.40 docker01.k8s.example.com docker01192.168.126.41 docker02.k8s.example.com docker02192.168.126.42 docker03.k8s.example.com docker03192.168.126.50 nfs.k8s.example.com nfs用命令ping主机名,如ping nfs,测试配置胜利 2.2 装置ansiblesudo yum install epel-release -ysudo yum install ansible -y2.3 下载ansible脚本https://e.coding.net/supwisdo... 拷贝至/home/eams目录下ansibe 2.4 编辑inventory文件cd /home/eams/ansible/vim inventory inventory文件(示例)绿色的名字不能更改,主机可依据理论须要增减 ...

September 24, 2021 · 3 min · jiezi

关于ansible:ansible使用笔记三Jinja2模板及playbook简介

ansible playbook编写一、Jinja2模板简介Jinja2是什么Jinja2是基于Python的模板引擎,蕴含变量和表达式两局部,两者在模板求值时会被替换为值,模板中还有标签,管制模板的逻辑 为什么要学习Jinja2模板因为playbook的模板应用Python的Jinja2模块来解决 Jinja2模版的根本语法 模板的表达式都是蕴含在他要分隔符"{{}}"内的管制的语句都是蕴含在分隔符"{% %}"内的模板反对正文,都是蕴含在分隔符'{# #}'内,反对块正文调用变量 {{varname}}计算 {{2+2}}判断{{1 in {{1,2,3}}Jinja2模版管制语句{% if name == '诗仙' %} 李白{% elif name == '诗圣' %} 杜甫{% elif name == '诗魔' %} 白居易{% else %} 李贺{% endif %}Jinja2过滤器变量能够通过过滤器批改,过滤器与变量用管道符号( | )宰割,也能够用圆括号传递可选参数,多个过滤器能够链式调用,前一个过滤器的输入会被作业后一个过滤器的输出 例如:加密一个字符串:{{'astr'|password_hash('sha512')}} 二、playbook简介playbook是什么playbook是ansible用于配置,部署和治理托管主机剧本,通过playbook的详细描述,执行其中一系列tasks,能够让远端主机达到预期的状态 也能够说 playbook字面意思即剧本,事实中由演员按剧本表演,在ansible中由计算机进行装置,部署利用,提供对外服务,以及组织计算机解决各种各样的事件 为什么要应用palybook 执行一些简略的工作,应用ad-hoc命令能够不便的解决问题,但有时一个设施过于简单时,执行ad-hoc命令是不适合的,最好应用playbookplaybook能够重复应用编写的代码,能够放到不同机器下面,像函数一样,最大化的利用代码,在应用ansible的过程中,解决的大部分操作都是在编写playbookplaybook语法根底(1) playbook由YAML语文编写,遵循YAML规范在同一行中,#之后的内容示意正文同一个列表中元素应该放弃雷同缩进playbook由一个或多个play组成play中host,variables,roles,tasks等对角示意办法都是键值两头以": "分隔示意YAML还有一个小的怪癖,它的文件开始行都是以 ---,这是YAML格局的一部分,表明一个文件的开始playbook形成 hosts: 定义交要执行playbook的近程主机级vars: 定义playbook运行时须要应用的变量tasks: 定义将要近程主机上执行的工作列表handlers: 定义task执行实现当前须要调用的工作playbook执行后果应用ansible-playbook运行playbook文件,输入内容为JSON格局,由不同色彩组成便于辨认 绿色代表执行胜利黄色 代表零碎状态产生扭转红色代表执行失败ansible具备幂等性,幂等性可能保障咱们反复的执行一项操作时,失去的后果是雷同的,咱们再来回顾一下幂等性的概念 "幂等性"是什么意思呢?举个例子,你想把一个文件拷贝到指标主机的某个目录上,然而你不确定此目录中是否曾经存在此文件,当你应用ansible实现这项工作时,就非常简单了,因为如果指标主机的对应目录中曾经存在此文件,那么ansible则不会进行任何操作,如果指标主机的对应目录中并不存在此文件,ansible就会将文件拷贝到对应目录中,说白了,ansible是"以后果为导向的",咱们指定了一个"指标状态",ansible会主动判断,"以后状态"是否与"指标状态"统一,如果统一,则不进行任何操作,如果不统一,那么就将"以后状态"变成"指标状态",这就是"幂等性","幂等性"能够保障咱们反复的执行同一项操作时,失去的后果是一样的。 有了幂等性的概念下面显示色彩代表的不同后果就比拟好了解了 绿色 代表执行胜利 后果曾经和指定"指标状态"统一不须要批改黄色 执行胜利,零碎状态产生扭转,批改过"指标状态"红色代表执行失败三、playbook编写应用ping模块编写 第一个playbook [root@ansible default]# cat ping.yml --- #第一行,示意开始- hosts: all #近程主机,多个能够用逗号孙隔开 remote_user: root #近程执行的用户名 tasks: - name: ping test #工作名称,你也能够了解为备注信息,会在执行中显示,不便浏览 ping: #模块名ping[root@ansible default]# ansible-playbook ping.yml -f 5 #-f 并发过程数量,默认是5PLAY [all] ******************************************************************************************TASK [Gathering Facts] ******************************************************************************ok: [cache]ok: [web1]ok: [web2]ok: [db2]ok: [db1]TASK [ping test] ************************************************************************************ok: [cache]ok: [web1]ok: [web2]ok: [db1]ok: [db2]PLAY RECAP ******************************************************************************************cache : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 db1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 db2 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 web1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 web2 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 playbook语法根底(2) ...

September 9, 2021 · 8 min · jiezi

关于ansible:ansible使用笔记二常用命令使用及常用模块介绍

一、常用命令应用后面有提到过ansible的罕用的命令和应用列出要执行主机ansible all --list-hosts批量检测主机ansible all -m ping -kansible主机汇合 -m 模块名称 -a 模块参数 主机汇合 主机名或分组名,多个应用"逗号"分隔-m 模块名称,默认command模块-a or --args模块参数其它参数-i inventory文件门路,或可执行脚本-k 应用交互式登陆密码-e 定义变量-v 显示详细信息 二、双引号" " 单引号' '对执行后果的影响执行以下命令来查看ansible的执行后果1)shellansible web -m shell -a "echo ${HOSTNAME}"ansible web -m shell -a 'echo ${HOSTNAME}'2)创立的文件在哪查看ansible cache -m shell -a 'cd /tmp'ansible cache -m shell -a 'touch testfile' [root@ansible ~]# ansible web -m shell -a "echo \${HOSTNAME}"web1 | CHANGED | rc=0 >>ansible //能够看到应用双引号"echo \${HOSTNAME}"显示的是本机的主机名web2 | CHANGED | rc=0 >>ansible[root@ansible ~]# ansible web -m shell -a 'echo \${HOSTNAME}'web2 | CHANGED | rc=0 >>web2 //应用单引号'echo \${HOSTNAME}'显示的才是近程主机名 才是咱们想要的后果web1 | CHANGED | rc=0 >>web1[root@ansible ~]# ansible cache -m shell -a 'cd /tmp'cache | CHANGED | rc=0 >>[root@ansible ~]# ansible cache -m shell -a 'touch testfile'[root@ansible ~]# ssh cache[root@cache ~]# ll总用量 4drwxr-xr-x 2 root root 6 4月 13 2019 Desktop-rw-r--r-- 1 root root 55 10月 20 15:04 resolv.conf-rw-r--r-- 1 root root 0 10月 29 15:25 testfile //创立的文件在家目录下 并没有在/tmp目录下注:1)变量解析 双引号"" 与单引号''应用区别ansible 执行命令是二次解析,第一次在本机解析, 第二次在执行机器解析,须要第二次解析的变量要转移总结:  参数默认应用 ' ' 号就对了 ...

September 9, 2021 · 5 min · jiezi

关于ansible:ansible使用笔记一ansible安装及常用配置说明

一、ansible介绍ansible是2013年推出的一款IT自动化和DevOps软件,2015年被RedHat收买。是基于Python研发,糅合很多老运维工具的长处,实现了批量操作系统配置,批量程序部署,批量运行命令等性能 ansible能够实现 自动化部署APP自动化治理配置项自动化继续交付自动化(AWS)云服务治理ansible长处 主从工作模式 只须要SSH和Python即可应用,无客户端ansible功能强大,反对自定义模块 模块丰盛 反对playbook上手容易,门槛低基于Python开发,做二次开发更容易应用公司比拟多,社区沉闷ansible个性 模块化设计,调用特定的模块实现特定工作基于Python语言实现paramikoPyYAML(半结构化语言)Jinja2其模块反对JSON等规范输入格局,能够采纳任何编程语言重写治理主机 Ansible能够在装置了Python 2(2.7版)或Python 3(3.5版及更高版本)的任何计算机上运行。这包含Red Hat,Debian,CentOS,macOS,任何BSD等。管制节点不反对Windowsansible 应用以下模块,都须要装置 paramikoPyYAML(半结构化语言)Jinja2httplib2six对于被托管的主机 ansible默认通过SSH协定治理机器被治理主机要开启SSH服务,容许ansible主机登录在托管节点上也须要装置Python 2(2.7版)或Python 3(3.5版及更高版本)如果托管节点上开启中了SElinux,须要装置libselinux-Python部署证书文件ansible 是通过SSH在近程执行命令的,SSH近程执行命令必须通过认证才行,明码写入配置文件安生性很差,个别会应用key形式认证,给所有主机公钥没有秘钥命令执行会出错 二、ansible装置及罕用配置阐明环境筹备6台主机,1台治理主机,5台托管主机,以实现批量程序部署,批量运行命令等性能,具体要求如下表 ansible罕用配置参数阐明 ansible配置文件查找程序首先检测 ANSIBLE_CONFIG变量定义的配置文件其次查看当前目录下 ./ansible.cfg文件再次查看以后用记家目录下 ~/ansible.cfg 文件最初查看/etc/ansible/ansible.cfg文件/etc/ansible/ansible.cfg是ansible默认配置文件门路/etc/ansible/hosts 是ansible默认host文件门路ansible.cfg配置文件inventory 定义托管主机地址配置host文件路径名 指定的配置文件,写入近程主机的地址host_key_checking = False ssh主机key验证配置参数-如果为False,不须要输出yes-如果为Ture,期待输出yesansible_ssh_prot ssh端口号:如果不是默认的端口号,通过此变量设置ansible_ssh_user默认的ssh用户名ansible_ssh_passssh明码(这种形式并不平安,强烈建议应用SSH密钥)ansible_ssh_private_key_filessh应用的私钥文件,实用于有多个密钥,而你不想应用SSH代理的状况 ansible 托管主机地址配置host文件格局 # 示意正文[组名称]主机名称或IP地址, 其它参数- vars变量定义,用于组名前面例如[all:vars] //指定所有组key的寄存地位ansible_ssh_private_key_file="/root/keyfile/id_dsa"- children子组定义,用于援用其它组名称例如[app:children] //其中web、db别离为不同分组web db[root@ansible myansible]# cat myhost [app1]web1db1[app2]web2db2[app:children]app1app2[other]cache[all:vars]ansible_ssh_private_key_file="/root/keyfile/id_dsa"ansiblew命令根底列出要执行主机ansible all --list-hosts批量检测主机 ansible all -m ping -kansible主机汇合 -m 模块名称 -a 模块参数 主机汇合 主机名或分组名,多个应用"逗号"分隔 -m 模块名称,默认command模块 -a or --args模块参数其它参数-i inventory文件门路,或可执行脚本-k 应用交互式登陆密码-e 定义变量-v 显示详细信息1 )治理主机 装置EPEL源 EPEL源蕴含下面ansible所须要的所有模块 ...

September 9, 2021 · 2 min · jiezi

关于ansible:在macbook使用ansible

brew install ansible配置主机 sudo vim /etc/ansible/hosts 192.168.0.11 ansible_ssh_user=root ansible_ssh_port=22 ansible_ssh_pass=passwd装置 brew install sshpass.rbsshpass.rb require 'formula'class Sshpass < Formula url 'http://sourceforge.net/projects/sshpass/files/sshpass/1.09/sshpass-1.09.tar.gz' homepage 'http://sourceforge.net/projects/sshpass' sha256 '71746e5e057ffe9b00b44ac40453bf47091930cba96bbea8dc48717dedc49fb7' def install system "./configure", "--disable-debug", "--disable-dependency-tracking", "--prefix=#{prefix}" system "make install" end def test system "sshpass" endendnginx-php-install-playbook.yml ---- hosts: all remote_user: root vars: - PHP_VERSION: 7.4 - GROUPUSER: www tasks: - name: 'create {{GROUPUSER}} group' group: name={{GROUPUSER}} state=present - name: 'create {{GROUPUSER}} user' user: name={{GROUPUSER}} group={{GROUPUSER}} state=present create_home=False shell=/sbin/nologin - name: 'software-properties-common' apt: name=software-properties-common state=present - name: 'Add php repo' apt_repository: repo='ppa:ondrej/php' - name: 'update' shell: apt update - name: 'Install php{{PHP_VERSION}} software' apt: name: - php{{PHP_VERSION}}-fpm - php{{PHP_VERSION}}-redis - php{{PHP_VERSION}}-common - php{{PHP_VERSION}}-bcmath - php{{PHP_VERSION}}-curl - php{{PHP_VERSION}}-gd - php{{PHP_VERSION}}-mbstring - php{{PHP_VERSION}}-mysql - php{{PHP_VERSION}}-xml - php{{PHP_VERSION}}-zip - php{{PHP_VERSION}}-swoole state: present - name: 'update php-fpm listen' lineinfile: dest: /etc/php/{{PHP_VERSION}}/fpm/pool.d/www.conf regexp: "listen = *" line: "listen = 127.0.0.1:9000" - name: 'update php-fpm group' lineinfile: dest: /etc/php/{{PHP_VERSION}}/fpm/pool.d/www.conf regexp: "listen.group = *" line: "listen.group = {{GROUPUSER}}" - name: 'update php-fpm owner' lineinfile: dest: /etc/php/{{PHP_VERSION}}/fpm/pool.d/www.conf regexp: "listen.owner = *" line: "listen.owner = {{GROUPUSER}}" - name: "restart php{{PHP_VERSION}}-fpm" service: name='php{{PHP_VERSION}}-fpm' state=restarted - name: 'Install nginx' apt: name=nginx state=present - name: 'update nginx user' lineinfile: dest: /etc/nginx/nginx.conf regexp: "user www-data" line: "user {{GROUPUSER}}" - name: "restart nginx" service: name=nginx state=restarted

July 27, 2021 · 1 min · jiezi

关于ansible:mac-使用ansible

brew install ansible配置主机 sudo vim /etc/ansible/hosts 192.168.0.11 ansible_ssh_user=root ansible_ssh_port=22 ansible_ssh_pass=passwd装置 brew install sshpass.rbsshpass.rb require 'formula'class Sshpass < Formula url 'http://sourceforge.net/projects/sshpass/files/sshpass/1.09/sshpass-1.09.tar.gz' homepage 'http://sourceforge.net/projects/sshpass' sha256 '71746e5e057ffe9b00b44ac40453bf47091930cba96bbea8dc48717dedc49fb7' def install system "./configure", "--disable-debug", "--disable-dependency-tracking", "--prefix=#{prefix}" system "make install" end def test system "sshpass" endend

July 26, 2021 · 1 min · jiezi

关于ansible:Nebula-Graph-的-Ansible-实践

本文首发于 Nebula Graph 公众号 NebulaGraphCommunity,Follow & 看大厂图数据库技术实际 背景在 Nebula-Graph 的日常测试中,咱们会常常在服务器上部署 Nebula-Graph。为了提高效率,咱们须要一种工具,能帮咱们做到疾速部署,次要的需要: 能够应用非 root 账户部署 Nebula Graph,这样咱们能够针对这个用户设置 cgroup 做资源限度。能够在操作机上更改配置文件,而后散发到部署的集群上,不便咱们做各种调参的测试。能够应用脚本调用,不便当前咱们继承在测试的平台或工具上。工具抉择上,晚期有 Fabric 和 Puppet,比拟新的工具有 Ansible 和 SaltStack。 Ansible 在 GitHub 上有 40K+ star, 而且在 2015年被 Red Hat 收买,社区比拟沉闷。很多开源我的项目都提供了 Ansible 的部署形式,比方 Kubernetes 中的 kubespray和 TiDB 中的 tidb-ansible。 综合下来,咱们应用 Ansible 来部署 Nebula Graph。 Ansible 介绍特点Ansible 是开源的,自动化部署工具(Ansible Tower 是商业的)。具备以下的几个特点: 默认协定是基于 SSH,相比于 SaltStack不 须要额定部署 agent。应用 playbook, role, module 来定义部署过程,比拟灵便。操作行为幂等。模块化开发,模块比拟丰盛。优缺点比拟显著 应用 SSH 协定,长处是大多数机器默认只有有账号密码就能够通过 Ansible 实现部署,而毛病性能上会差一些。应用 playbook 来定义部署过程,Python 的 Jinja2 作为模板渲染引擎,对于相熟的人来说会比拟不便,而对于没有应用过的人,会减少学习老本。综上,实用于小批量机器的批量部署,不须要关怀额定部署 agent 的场景,和咱们的需要比拟匹配。 ...

May 13, 2021 · 3 min · jiezi

关于devops:什么是-Ansible-使用-Ansible-进行配置管理

【注】本文译自:https://www.edureka.co/blog/w... Ansible 是一个开源的 IT 配置管理、部署和编排工具。它旨在为各种自动化挑战提供微小的生产率收益。该工具应用非常简单,但功能强大,能够自动化简单的多层 IT 应用程序环境。 通过本文,您将学习: Ansible 是什么?为什么咱们须要 Ansible?应用 Ansible 的长处Ansible 能做什么?Ansible 架构DevOps 中的 AnsibleNASA 对 Ansible 的理论用法一些 Ansible 术语,能够帮忙您更好地了解Ansible。 为什么咱们须要 Ansible ? 在晓得什么是 Ansible 之前,有很必要理解 Ansible 呈现之前所面临的问题。 让咱们略微回顾一下:在网络计算的开始、牢靠而高效地部署和治理服务器成为一项挑战之时。在那个时候,系统管理员手动治理服务器,在单个服务器上安装软件,更改配置以及治理服务。 随着数据中心的倒退以及托管应用程序的日益简单,管理员意识到他们无奈满足启用的应用程序那样疾速地扩大其手动系统管理。因为开发团队是麻利的,并且常常公布软件,然而 IT 经营破费很多工夫来配置零碎,从而妨碍了开发人员的工作速度。这就促成了服务器配置和配置管理工具的蓬勃发展。 考虑一下治理服务器队列的繁琐例程。咱们始终须要不断更新,推送更改,在其上复制文件等。这些工作使事件变得非常复杂且耗时。 然而,让我告诉您,上述问题有解决方案。那就是 – Ansible。 在全面介绍 Ansible 之前, 首先让咱们相熟一些 Ansible 术语:Ansible 术语: 控制器机器:装置 Ansible 的机器,负责在您治理的服务器上运行资源调配。库存:一个初始化文件,其中蕴含无关您所治理的服务器的信息。剧本:Ansible 置备的入口点,其中的自动化是通过应用 YAML 格局的工作定义的。工作:定义要执行的单个过程的块,例如装置软件包。模块:模块通常形象一个零碎工作,例如处理程序包或创立和更改文件。Ansible 具备许多内置模块,然而您也能够创立自定义模块。角色:一种预定义方法,用于组织剧本和其余文件,以便于共享和重用配置的各个局部。播放:从头到尾执行的预配称为播放。简略来说,执行剧本称为播放。Fact:蕴含无关零碎信息的全局变量,例如网络接口或操作系统。处理程序:用于触发服务状态更改,例如重新启动或进行服务。 Ansible 是一个有用的工具,可让您创立一组机器 ,形容如何配置这些机器或应答它们采取什么操作。Ansible 从地方地位收回所有命令来执行这些工作。 节点计算机上未装置其余客户端软件。它应用 SSH 连贯到节点。Ansible 只须要装置在甚至能够是笔记本电脑的管制机器(您将在其上运行命令的机器)上。这是解决简单问题的简略办法。 当我说 Ansible 填补了配置管理和 IT 编排世界中的所有破绽时,我并没有自夸。当您看看上面提到的 Ansible 的益处时,您也会晓得的: 应用 Ansible 的长处简略:Ansible 应用 YAML 格局的简略语法,称为剧本。 YAML是一种人类可读的数据序列化语言。 这非常简单。 因而,不须要任何非凡的编码技能,甚至您的 IT 组织中不理解 Ansible 的人都能够浏览剧本并理解正在产生的事件。 Ansible 总是按程序执行工作。 装置也很简略。 总之,简略性确保您能够疾速入门。无代理:最初,Ansible是齐全无代理的。 您无需在要主动执行的客户端零碎或主机上安装任何代理/软件或其余防火墙端口。 您不用独自设置治理根底构造,包含治理整个零碎,网络和存储。 Ansible 进一步缩小了团队立刻开始自动化的工作量。弱小而灵便:Ansible 具备弱小的性能,能够使您对最简单的 IT 工作流程进行建模。 在这方面,Ansible 的内置电池办法(这种理念意味着自力更生的、开箱即用,具备所需的所有),能够治理您所须要的基础设施、网络、操作系统和服务已被应用,因为 Ansible 为您提供了数百个模块来对其进行治理。 Ansible 的性能使您能够编排整个应用环境,而不论它被部署在何处。高效:服务器上没有额定的软件,意味着更多的应用程序资源。 另外,因为 Ansible 模块通过 JSON 进行工作,因而 Ansible 能够通过应用你相熟的编程语言编写模块进行扩大。 Ansible 引入了模块作为软件的根本构建块。 因而,您甚至能够依据须要自定义它。 例如如果您已有一个以纯文本格式发送音讯的音讯发送模块,并且您也想发送图像,也能够增加图像发送性能。 ...

April 2, 2021 · 2 min · jiezi

关于ansible:ansibleplaybook-nodejs

=====ansible-go tree=====tree ansible-go -L 2ansible-go├── ansible.cfg├── docs│   └── ansible-install├── examples│   ├── ansible.cfg│   ├── group_vars│   ├── inventory│   └── playbooks├── roles│   ├── apache│   ├── appserver│   ├── aws│   ├── aws_ec2│   ├── galaxy│   ├── geoipupdate│   ├── haproxy│   ├── innodb_data_restore│   ├── keepalived│   ├── mysql│   ├── mysqlcluster│   ├── ndbcluster_data_restore│   ├── node.4dfornine99│   ├── node.backcall│   ├── node.bigtwo_p2p│   ├── node.bigtwo_webonline│   ├── node.daemon│   ├── node.fbsse│   ├── node.flashgame_security│   ├── nodejs10│   ├── nodejs7│   ├── node.ncpay_grabber│   ├── node.ncpay_rpm│   ├── node.ncpay_transferin│   ├── node.ncpay_transferout│   ├── node.nodegrabasc_bot│   ├── node.p2p_bot│   ├── node.rocketchat│   ├── node.spay_daemon│   ├── php│   ├── proxmox│   ├── redis│   ├── repo-epel│   ├── repo-ius│   ├── selinux│   ├── system.chrony│   ├── system.common│   ├── system.files│   ├── system.firewalld│   ├── system.hostname│   ├── system.hosts│   ├── system.ntpd│   ├── system.packages│   ├── system.resolv_conf│   ├── system.rsync│   ├── system.rsyslog│   ├── system.services│   ├── system.snmp│   ├── system.sshd│   ├── system.sysctl│   ├── system.timezone│   ├── system.update│   └── zabbix-agent├── staging    ├── ansible.cfg    ├── docker-containers    ├── group_vars    ├── inventory    ├── inventory-gwj    └── playbooks =====定义role node.ncpay_transferin=====ls roles/node.ncpay_transferin/defaults 默认变量,优先级最初 tasks role须要执行的工作templates 模版文件,个别搁置文件=====设置defaults=====vi roles/node.ncpay_transferin/defaults/main.yml <code>---ncpay_transferin_files: - ncpay-transferin@.service - ncpay-transferin.targetncpay_transferin_services: - ncpay-transferin.target - ncpay-transferin@180.service - ncpay-transferin@181.service - ncpay-transferin@182.service - ncpay-transferin@183.service - ncpay-transferin@184.service - ncpay-transferin@3000.service - ncpay-transferin@3001.service - ncpay-transferin@3002.service - ncpay-transferin@3003.service - ncpay-transferin@3004.service - ncpay-transferin@3005.service - ncpay-transferin@3006.service - ncpay-transferin@3007.service - ncpay-transferin@3008.service - ncpay-transferin@3009.service - ncpay-transferin@3010.service - ncpay-transferin@3011.service - ncpay-transferin@3012.service - ncpay-transferin@3013.service - ncpay-transferin@3014.service - ncpay-transferin@3035.service - ncpay-transferin@3036.service - ncpay-transferin@3037.service - ncpay-transferin@3038.service - ncpay-transferin@3039.service - ncpay-transferin@3055.service - ncpay-transferin@3056.service - ncpay-transferin@3057.service - ncpay-transferin@3058.service - ncpay-transferin@3059.service - ncpay-transferin@3260.service - ncpay-transferin@3261.service - ncpay-transferin@3262.service - ncpay-transferin@3263.service - ncpay-transferin@3264.service - ncpay-transferin@3390.service - ncpay-transferin@3391.service - ncpay-transferin@3392.service - ncpay-transferin@3393.service - ncpay-transferin@3394.service</code>=====设置tasks=====vi roles/node.ncpay_transferin/tasks/main.yml<code>---- name: copy transferin file template: src: "templates/{{ item }}" dest: /etc/systemd/system/ with_items: "{{ ncpay_transferin_files }}"- name: ncpay transferin start and enable service: name: "{{ item }}" state: started enabled: yes with_items: "{{ ncpay_transferin_services }}"</code>=====设置 templates=====vi roles/node.ncpay_transferin/templates/ncpay-transferin@.service<code>[Unit]Description=NodeJS Ncpay Transferin Bot Requires=network.target After=syslog.target network.target PartOf=ncpay-transferin.target[Service]ExecStartPre=/bin/sh -c "echo PUBLIC_PORT=`expr 20000 + %i` >> /run/ncpay-transferin-%i.env"ExecStartPre=/bin/sh -c "echo INTERNAL_PORT=`expr 20000 + %i` >> /run/ncpay-transferin-%i.env"ExecStopPost=/bin/rm /run/ncpay-transferin-%i.envEnvironmentFile=-/run/ncpay-transferin-%i.envExecStart=/usr/bin/node /var/nodejs/bank-scripts/index.js ExecStop=/bin/kill -SIGTERM $MAINPID TimeoutStopSec=360s StandardOutput=syslog StandardError=syslog SyslogIdentifier=NodeJS ncpay-transferin-%iUser=rootGroup=root KillSignal=SIGTERM KillMode=mixed Restart=on-failure RestartSec=10StartLimitInterval=30s StartLimitBurst=2 Environment=NODE_ENV=staging Environment=ROBOTID=%i Environment=ROBOTTYPE=4Environment=APP_NAME=ncpay Environment=SERVERID=1Environment=XVFBSERVERNUM=%iEnvironment=INTERNAL_IP=xxxxxEnvironment=PUBLIC_IP=xxxxEnvironment=ROOTDIR=/var/nodejs/bank-customer-transferin/ Environment=NODE_PATH=/usr/lib/node_modules [Install] WantedBy=ncpay-transferin.target</code>vi roles/node.ncpay_transferin/templates/ncpay-transferin.target <code>[Unit]Description=NodeJS NCPAY transferin target allowing to start/stop all ncpay-transferin@.service instances at oncePartOf=ncpay.target[Install]WantedBy=multi-user.target ncpay.target</code>=====定义host=====vi ansible-go/staging/inventory<code>[nodejs_ncpay]x.x.x.x</code>=====定义playbook 设置或者重写变量,调用role=====vi staging/playbooks/nodejs_ncpay.yaml<code>- hosts: nodejs_ncpay vars: update_system: yes common_timezone: Asia/Kuala_Lumpur hostname: nodejs_ncpay firewalld_rich_rules: - rule: rule family="ipv4" source address="10.1.0.0/16" port port="0-65535" protocol="tcp" accept - rule: rule family="ipv4" source address="10.0.1.0/24" port port="18000-19999" protocol="tcp" accept - rule: rule family="ipv4" source address="10.10.1.0/24" accept - rule: rule family="ipv4" source address="0.0.0.0/0" port port="30001-40000" protocol="tcp" accept - rule: rule family="ipv4" source address="0.0.0.0/0" port port="50001-60000" protocol="tcp" accept - rule: rule family="ipv4" source address="0.0.0.0/0" port port="59000-59009" protocol="tcp" accept nodejs_npm_global_packages: - name: aws-sdk version: 2.395.0 - name: debug version: 4.1.1 - name: iconv-lite version: 0.4.19 - name: jimp version: 0.3.7 - name: koa-router version: 8.0.8 - name: mysql version: 2.13.0 - name: request version: 2.88.2 - name: underscore version: 1.8.3 nodejs_npm_global_unsafe_packages: - name: nightmare version: 2.10.0 roles: - system.update - system.sshd - system.hostname - system.timezone - system.common - system.packages - system.rsync - system.firewalld - system.snmp - system.rsyslog - system.sysctl - system.chrony - zabbix-agent - nodejs10 - node.daemon - node.ncpay_rpm - node.ncpay_grabber - node.ncpay_transferin - node.ncpay_transferout</code>=====执行playbook=====cd ansible-go/stagingansible-playbook -i inventory playbooks/nodejs_ncpay.yaml

February 23, 2021 · 3 min · jiezi

关于ansible:Ansible-Tipsqbit

相干网址Ansible github: https://github.com/ansible/an...Ansible 官网文档: https://docs.ansible.com/配置 ssh 免密登录将公钥传送到 ssh 被控服务器主控端配置(配好后用 ssh node01 测试)vim ~/.ssh/config # 将 ip 自身也作为别名之一Host node01 172.31.10.157 HostName 172.31.10.157 Port 22 User ubuntu IdentityFile ~/.ssh/id_rsa Host node02 172.31.15.123 HostName 172.31.15.123 Port 22 User ubuntu IdentityFile ~/.ssh/id_rsa根本命令ping# ping 所有资产清单上的主机ansible all -m ping# ping node 组的所有主机ansible node -m ping执行 shell 命令ansible node -a 'ls /home/ubuntu'执行脚本ansible-playbook 1_push.ymlAnsible 配置 Elasticsearch环境操作系统: Ubuntu 20.04 LTSPython: 3.8.5Ansible: 2.10.4资产清单(Inventory)cat /etc/ansible/hosts [node]172.31.10.157 ansible_user=ubuntu es_node_name=node01172.31.15.123 ansible_user=ubuntu es_node_name=node02172.31.8.77 ansible_user=ubuntu es_node_name=node03脚本(Inventory)推送(1_push.yml)- hosts: node user: ubuntu tasks: - name: push file to node copy: src: /home/ubuntu/es_down dest: /home/ubuntu mode: 0660装置(2_install.yml)- hosts: node user: ubuntu tasks: - name: Configure jvm.options become: true become_user: root shell: dpkg -i /home/ubuntu/es_down/elasticsearch-7.10.1-amd64.deb配置 jvm(3_config_jvm.yml)- hosts: node user: ubuntu tasks: - name: Configure jvm.options become: true become_user: root lineinfile: dest: '/etc/elasticsearch/jvm.options' regexp: "{{ item.old }}" line: "{{ item.new }}" with_items: - {old: '^-Xms',new: '-Xms8g' } - {old: '^-Xmx',new: '-Xmx8g' }配置 Elasticsearch(4_config_es.yml)- hosts: node user: ubuntu tasks: - name: Configure elasticsearch.yml become: true become_user: root lineinfile: dest: '/etc/elasticsearch/elasticsearch.yml' backrefs: no state: present regexp: "{{ item.old }}" line: "{{ item.new }}" with_items: - {old: '^cluster.name', new: 'cluster.name: esapi' } - {old: '^node.roles', new: 'node.roles: [data]' } - {old: '^node.name', new: 'node.name: {{ es_node_name }}' } - {old: '^myhost', new: 'myhost: {{ inventory_hostname }}' } - {old: '^path.data', new: 'path.data: /data/elasticsearch/data' } - {old: '^path.log', new: 'path.log: /data/elasticsearch/log' } - {old: '^network.host', new: 'network.host: 0.0.0.0' } - {old: '^http.port', new: 'http.port: 9200' } - {old: '^discovery.seed_hosts', new: 'discovery.seed_hosts: ["172.31.0.1", "172.31.0.2", "172.31.0.3"]' } - {old: '^cluster.initial_master_nodes', new: 'cluster.initial_master_nodes: ["mnode01", "mnode02", "mnode03"]' } 本文出自 qbit snap

December 28, 2020 · 2 min · jiezi

关于ansible:极简教程|20-分钟玩转Ansible系列手册

一、根本部署装置Ansible# yum -y install epel-release# yum list all *ansible*# yum info ansible# yum -y install ansibleAnsible配置文件/etc/ansible/ansible.cfg    主配置文件/etc/ansible/hosts          Inventory/usr/bin/ansible-doc        帮助文件/usr/bin/ansible-playbook   指定运行工作文件定义Inventory# cd /etc/ansible/# cp hosts{,.bak}# > hosts# cat hosts[webserver]127.0.0.1192.168.10.149[dbserver]192.168.10.113应用秘钥形式连贯# ssh-keygen -t rsa# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.10.149# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.10.113# ssh-copy-id -i /root/.ssh/id_rsa.pub root@127.0.0.1应用帮忙# ansible-doc -l                列出ansible所有的模块# ansible-doc -s MODULE_NAME    查看指定模块具体实用Ansible命令利用根底语法:ansible <host-pattern> [-f forks] [-m module_name] [-a args]<host-pattern>  这次命令对哪些主机失效的   inventory group name   ip   all-f forks        一次解决多少个主机-m module_name  要应用的模块-a args         模块特有的参数# ansible 192.168.10.113 -m command -a 'date'# ansible webserver -m command -a 'date'# ansible all -m command -a 'date'二、常见模块command     命令模块(默认模块)用于在近程主机执行命令;不能应用变量,管道等   # ansible all -a 'date'cron        打算工作       month   指定月份   minute  指定分钟   job     指定工作   day     示意那一天   hour    指定小时   weekday 示意周几   state   示意是增加还是删除       present:装置       absent:移除   # ansible webserver -m cron -a 'minute="*/10" job="/bin/echo hello" name="test cron job"'   #不写默认都是*,每个工作都必须有一个名字   # ansible webserver -a 'crontab -l'   # ansible webserver -m cron -a 'minute="*/10" job="/bin/echo hello" name="test cron job" state=absent'  #移除工作user    用户账号治理   name    用户名   uid     uid   state   状态     group   属于哪个组   groups  附加组   home    家目录   createhome  是否创立家目录   comment 正文信息   system  是否是零碎用户      # ansible all -m user -a 'name="user1"'   # ansible all -m user -a 'name="user1" state=absent'group   组治理   gid     gid         name    组名                 state   状态             system  是否是零碎组   # ansible webserver -m group -a 'name=mysql gid=306 system=yes'   # ansible webserver -m user -a 'name=mysql uid=306 system=yes group=mysql'copy    复制文件(复制本地文件到近程主机的指定地位)   src     定义本地源文件门路   dest    定义近程目录文件门路(绝对路径)   owner   属主   group   属组   mode    权限   content 取代src=,示意间接用此处的信息生成为文件内容   # yum -y install libselinux-python   # ansible all -m copy -a 'src=/etc/fstab dest=/tmp/fstab.ansible owner=root mode=640'   # ansible all -m copy -a 'content="hello ansiblenHi ansible" dest=/tmp/test.ansible'file    设置文件的属性   path|dest|name  对那个文件做设定      创立文件的符号链接:       src:    指定源文件       path:   指明符号链接文件门路   # ansible all -m file -a 'owner=mysql group=mysql mode=644 path=/tmp/fstab.ansible'   # ansible all -m file -a 'path=/tmp/fstab.link src=/tmp/fstab.ansible state=link'ping    测试指定主机是否能连贯   # ansible all -m pingservice 治理服务运行状态   enabled 是否开机主动启动   name    指定服务名   state   指定服务状态       started     启动服务       stoped      进行服务       restarted   重启服务   arguments   服务的参数   # ansible webserver -m service -a 'enabled=true name=httpd state=started'shell   在近程主机上运行命令   尤其是用到管道变量等性能的简单命令   # ansible all -m shell -a 'echo magedu | passwd --stdin user1'script  将本地脚本复制到近程主机并运行之   # ansible all -m script -a '/tmp/test.sh'yum     安装程序包   name    程序包名称(不指定版本就装置最新的版本latest)   state   present,latest示意装置,absent示意卸载   # ansible webserver -m yum -a 'name=httpd'   # ansible all -m yum -a 'name=ntpdate'  #默认就是装置   # ansible all -m yum -a 'name=ntpdate state=absent'setup   收集近程主机的facts   每个被治理节点在承受并运行治理命令之前,会将本人主机相干信息,如操作系统版本,IP地址等报告给近程的ansible主机   # ansible all -m setup三、Ansible playbook组成构造: ...

November 19, 2020 · 7 min · jiezi

关于ansible:Ansible-快速入门

Ansible 应用阐明[TOC] 1.装置mac 零碎下能够通过homebrew来装置,装置脚本如下: brew install ansible 装置是否胜利校验,执行ansible --version命令,打印如下信息阐明装置胜利: ansible 2.9.11 config file = None configured module search path = ['/Users/tomcat/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/local/Cellar/ansible/2.9.11/libexec/lib/python3.8/site-packages/ansible executable location = /usr/local/bin/ansible python version = 3.8.5 (default, Jul 21 2020, 10:48:26) [Clang 11.0.3 (clang-1103.0.32.62)]2.配置2.1 创立.ansible.cfg文件MacOS上装置完Ansilbe,须要手动创立配置文件(如上配置显示:config file = None示意未配置配置文件)。.ansible.cfg 是 ansible 的全局配置文件,编辑 ~/.ansible.cfg 文件,将 官网提供的全局配置 ansible.cfg 复制到该文件中。 $ vi ~/.ansible.cfg指定 inventory 目录的门路为 /usr/local/etc/ansible/hosts,这个门路能够依据集体爱好规定。 2.2 配置hosts文件切换到 /usr/local/etc 目录下创立 ansible 目录,并创立 hosts 文件,将 官网提供的 hosts 配置 复制到该文件下。之后还有其它配置文件都能够放在 /usr/local/etc/ansible/ 目录下,办法同 hosts 配置文件。 ...

October 12, 2020 · 1 min · jiezi