Hacklink panel

Hacklink Panel

Hacklink panel

Hacklink

Hacklink panel

Backlink paketleri

Hacklink Panel

Hacklink

Hacklink

Hacklink

Hacklink panel

Hacklink

Hacklink

Hacklink

Hacklink

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink satın al

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Illuminati

Hacklink

Hacklink Panel

Hacklink

Hacklink Panel

Hacklink panel

Hacklink Panel

Hacklink

Masal oku

Hacklink

Hacklink

Hacklink

Hacklink

Hacklink

Hacklink

Hacklink

Hacklink panel

Masal Oku

Hacklink

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink

Hacklink

Hacklink

Hacklink

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink

Hacklink

Hacklink Panel

Hacklink

Hacklink

Hacklink

Buy Hacklink

Hacklink

Hacklink

Hacklink

Hacklink satın al

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink

Masal Oku

Hacklink panel

Hacklink

Hacklink

Hacklink

Hacklink satın al

Hacklink Panel

Postegro

royalbet

deneme bonusu ver3n siteler

Hacklink panel

cratosroyalbet

sezarcasino

grandpashabet

pulibet güncel

vdcasino

betebet

Hacklink satın al

Hacklink

pulibet güncel giriş

pulibet giriş

casibom

casibom

casibom

casibom

casibom

casibom

casibom

casibom

adapazarı escort

antalya dedektör

jojobet

jojobet giriş

casibom

casibom giriş

casibom

casibom

sapanca escort

deneme bonusu

betathome

betathome eingang

betathome login

piabellacasino

kingroyal

kingroyal güncel giriş

kingroyal giriş

kingroyal giriş

jojobet

jojobet giriş

Grandpashabet

INterbahis

AGB99

Agb99

taraftarium24

meritking

izmir escort

matbet

kingroyal

porno

sakarya escort

Hacking forum

Deneme Bonusu Veren Siteler

google

kingroyal

king royal giriş

kingroyal güncel giriş

king royal

mariobet

ikimisli

marsbahis

imajbet

bahsegel

deneme bonusu

imajbet

mariobet

marsbahis

imajbet

kingroyal

casibom

casibom

tlcasino

tambet

İkimisli

casibom

×

1.ansible极速上手指南

1.1批量管理工具选型

工具说明缺点
xshell发送键输出到所有对话。不适应机器过多的场景,需要连接后才能用
for+ssh/scp+密钥认证密钥认证,免密码登录scp传输文件/脚本ssh远程执行命令或脚本串行(一台一台)
saltstack需要安装客户端(CS结构),底层环境(系统等)已经好了
ansible无客户端(密钥认证)管理端安装ansible工具批量部署环境是py写的,需要python解释器python版本不要太旧 红帽的
Terraform关注基础设施(云环境),一键创建100台云服务器,一键创建负载均衡,数据库产品。管理底层环境。

1.2ansible架构

  • 先配置好密钥认证
  • 主机清单:通过主机清单(inventory)连接管理被控端。
  • 2类用法:
  • ad-hoc:就是命令行执行模块
  • playbook:使用playbook剧本(核心)

1.3ansible的使用

环境准备主机名ip
ansible管理端m01(增加核心数 4c或8c)10.0.0.61/172.16.1.61
被管理端: 其他所有机器web01-04,nfs01,backup,db01-02,lb01-02…..
#如何部署ansible,使用pip工具安装.
pip 安装python软件包.
#1.安装pip工具
yum install -y python3-pip

#2.升级pip
python3 -m pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple --upgrade pip
#pip3 --version查看升级前pip 20.2.2  升级后pip 24.0

#3.pip源(加速pip下载软件)
pip3 config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

#4.安装ansible
pip3 install  ansible

#5.配置ansible(yum安装配置文件默认存在)
mkdir -p /etc/ansible/     #创建配置文件存放目录

cat >/etc/ansible/ansible.cfg<<'EOF'

一些小故障

  • 安装时会临时下载一些软件包和临时文件,放在tmp下,麒麟和欧拉/tmp/目录不是独立的,是tmpfs(内存),内存的四分之一,导致内存不足问题(模板机优化时已改) 解决:1.systemctl mask tmp.mount 2.umount /tmp/3.重启检查结果
  • 未找到主机清单文件
  • 模块中没有此参数
  • 模块不存在
  • permission denied:一般是密钥认证没配或没配好
  • No route to host:一般是机器未开或防火墙拦截

配置主机清单文件

#1.配置好密钥认证(脚本分发密钥即可)

#2.配置主机清单文件
分组名字不要和主机名一样,一层一层分(lb,web,db,nfs,bak,cache),按环境分(prod,test,dev)
[root@m01 ~]# cat /server/ansible/hosts 
#主机清单文件inventory

db nfs bak #3.使用 ansible -i /server/ansible/hosts all -m command -a ‘hostname -I’ #all 位置可以是分组名字具体分组(web/lb),ip,all所有 #-m 指定模块 -a 模块的选项/参数,内不支持别名 -i指定主机清单文件

ssh 172.16.1.5 hostname -I
ssh-copy-id命令没了,去openssh源码包find找复制到/bin/给权限.

1.4主机清单

  • 正常分组即可:层次分组,环境分组…..
.....

#创建data分组(可改),子组有db组,nfs组,bak组

需求:100台机器,100个不同密码如何做?

  • 方法1:写循环(读取不同密码),分发密钥
  • 方法2:写循环,生成主机清单文件
主机清单文件中指定密码(配合脚本生成此文件)
模块
ping模块,用来检查测试 检查密钥认证是否OK
command模块,默认的模块 不指定模块也是使用它
  • 小结
  • 创建主机清单文件: -i 指定主机清单文件 默认读取/etc/ansible/hosts
  • 分组(层次,环境,地区)
  • 子组children(套娃)
  • 主机清单文件里面指定用户名,密码,端口

1.5模块

  • 应用
  • 命令行使用,一般是临时的
  • 写在剧本中(playbook)
常用模块分类模块说明/选项
执行命令/脚本command默认的模块一般用于执行简单的命令不支持特殊符号 | , {} …“ $
shell与command类似,支持特殊符号
script1.分发脚本(管理端指定的文件)2.执行脚本(运行)3.自动删除脚本
文件/目录filetouch,mkdir,rm,chown,chmod,ln -s文件,目录,软连接path=路径(指定目录,目录下文件)src=源文件(给它创建软连接)mode=0644,0755 owner(用户得存在) groupstate=touch(文件)/directory(目录)/link(软连接)/absent(删除)
用户模块useruseradd,userdel,passwd批量添加普通/虚拟用户name(必写)uidgroupshellcreate_homepassword(比较复杂)state=present(添加) absent(删除)
用户组模块groupname gid state=present(添加) absent(删除)
安装软件包yum/aptname=软件包名字(可接多个)state=present(安装) absent(删除) latest(更新)
分发配置文件copy类似于scp命令,分发配置文件,压缩包,不要分发目录!!(很慢)src=管理机某个位置的文件dest=被管理机还可以增加: mode=0644,0755 owner groupbackup
服务管理systemd服务管理:开机自启动,开启,关闭,重启name=服务名字enabled=是否开机自启动yes/no true/falsestate=started,stopped,restarted,reloadeddaemon_reload=true/false
传输压缩包并解压(解压tar包)(和copy很像)unarchive还可以改所有者,用户组,权限src=指定压缩包dest=目标
修改文件内容(少)以行为单位lineinfile还可以改owner,group,modepath=指定要修改的文件regexp=匹配正则(去掉这个,line就是追加功能)line=修改为这里指定的内容
输出至命令行debugmsg选项

1)command,shell,script模块

#1.command模块
[root@m01 ~]# ansible -i /server/ansible/hosts db -m command -a 'touch {01..03}.txt'
[root@db01 ~]# ll
-rw-r--r-- 1 root root       0 11月 10 17:04 {01..03}.txt

#2.shell模块
[root@m01 ~]# ansible -i /server/ansible/hosts db -m shell -a 'touch {01..03}.txt'
[root@db01 ~]# ll
-rw-r--r-- 1 root root       0 11月 10 17:05 01.txt
-rw-r--r-- 1 root root       0 11月 10 17:05 02.txt
-rw-r--r-- 1 root root       0 11月 10 17:05 03.txt

#3.script模块(参数内不用写bash)
[root@m01 ~]# ansible -i /server/ansible/hosts db -m script -a '/server/scripts/ceshi.sh'

2)file模块

查看帮助
1.ansible-doc -s  file   #-s 搜索模块 找其选项
2.官网
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/file_module.html

3)user用户/group用户组模块

#1.useradd 添加用户
useradd lidao
ansible -i hosts all  -m user -a 'name=lidao state=present'

#2.添加虚拟用户
useradd -s /sbin/nologin -M  www-ans
ansible -i hosts  all -m user -a 'name=www-ans shell="/sbin/nologin" create_home=false state=present'

#3.web和nfs服务器上添加虚拟用户 指定uid,gid
groupadd -g 2999 www-nfs
useradd -u 2999 -g www-nfs -s /sbin/nologin  -M  www-nfs

#groupadd
ansible -i hosts web:nfs  -m group -a 'name=www-nfs gid=2999 state=present'
#useradd
ansible -i hosts  web,nfs  -m user -a 'name=www-nfs group=www-nfs uid=2999 shell="/sbin/nologin" create_home=false state=present'

4)批量修改密码

5)yum/apt copy systemd模块

#1.安装软件:yum/apt
# name=指定软件包名字(可接多个)  state=present/absent/latest(更新)
ansible -i hosts all  -m yum -a 'name=tree,telnet,lrzsz state=present'

#2.分发配置文件 copy (文件-->发到被管理端)
# 推荐分发文件或压缩包,别分发目录(很慢)
# src=源文件或目录  dest=目标  backup=是否要备份(若文件存在,2个文件内容不一致,替换前做备份)
ansible -i hosts all -m copy  -a 'src=/etc/hosts dest=/etc/hosts backup=true'

#3.systemd服务管理模块
# reloaded  restarted  started  stopped

#开启nginx 并设置开机自启动
ansible -i hosts web -m systemd  -a 'name=nginx enabled=true state=started'
#关闭firewalld 并禁止开机自启动
ansible -i hosts all -m systemd  -a 'name=firewalld enabled=false state=stopped'

总结

  • 主机清单文件
  • ans模块
  • 预习剧本(playbook)
  • 部署服务流程(rsync,nfs,nginx,php,tomcat,mysql,redis,linux优化等)

3.ansible剧本与变量

3.1ansible剧本

  • playbook剧本
  • 你就是导演编剧,编排电影里面的,男女主人公,剧情等
  • 剧本:导演/编剧写的剧本
  • 演员:所有主机,主机清单
  • 剧情:指定主机,执行什么模块(任务)
  • 目标对应的服务器是主机清单中的机器/分组。
  • 剧本中注意事项:
  • 1️⃣对齐,空格2个,禁止使用tab键
  • 2️⃣yml或yaml结尾
#1.创建剧本存放的目录
mkdir -p /server/ansible/

#2.进入此目录
cd /server/ansible/

#3.把主机清单文件移过来(默认在/etc/ansible/hosts下)
mv /etc/ansible/hosts  .

#4.简单测试
ansible -i hosts  all  -m ping

#5.安装cowsay美化输出
yum install -y cowsay

#6.书写一个简单的剧本
[root@m01 /server/ansible]# cat 01.ceshi.yml 
- hosts: all
  tasks:
    - name: 01打开冰箱
      shell: echo 01.open >>/tmp/bingxiang.log  #剧本中输出不在屏幕,需追加至文件
    - name: 02把大象放入
      shell: echo 02.put >>/tmp/bingxiang.log
    - name: 03关门
      shell: echo 03.close >>/tmp/bingxiang.log

#7.运行剧本
ansible-playbook -i hosts 01.ceshi.yml   #-C 检查(模拟运行看是否OK)

1)部署tomcat

  • 步骤流程(全新环境使用)
  • 具体实现
[root@m01 /server/ansible]# cat  01.tomcat_install.yml 
- hosts: web
  vars:
    - dir: /app/tools/
  tasks: 
    - name: 01安装openjdk11
      yum:
        name: java-11-openjdk
        state: latest

    - name: 02创建目录
      file:
        path: "{{ dir }}"
        state: directory

    - name: 03分发tomcat压缩包并解压
      unarchive: 
        src: ./apache-tomcat-9.0.111.tar.gz  #在剧本目录下,相对路径即可
        dest: "{{ dir }}"

    - name: 04创建软连接
      file:
        src: /app/tools/apache-tomcat-9.0.111
        path: /app/tools/tomcat
        state: link

    - name: 05分发systemctl配置文件
      copy:
        src: ./tomcat.service
        dest: /usr/lib/systemd/system/

    - name: 06启动服务
      systemd:
        name: tomcat
        enabled: true
        daemon_reload: true
        state: restarted

2)部署nginx

3)部署rsync

4)批量修改密码剧本

  • 需求:定期修改更新密码
  • 这里自己先用到了vars变量,facts变量,msg|
  • user模块的password选项,指定密码,指定的是加密后的密码。
  • password_hash(‘sha512′,’asdasf’) 密码插件用”sha512″哈希算法,加盐(随机内容,固定的)

3.2ansible变量

ans定义变量的方法说明与特点
剧本定义在剧本中创建与使用,仅限当前play部分(hosts部分)使用–vars
独立文件中定义(变量文件)把变量写入到文件中,通过vars_files指定调取, play中指定变量文件位置
分组变量推荐. 根据分组(主机清单)自动调用,剧本目录下创建group_vars/all目录,在vars.yml文件中创建变量与使用,最方便
facts变量剧本运行的时候默认的任务,收集信息,根据信息创建的变量如果不使用,建议关闭功能,加速
register变量类似于shell中``的功能,先执行命令,结果保留下来。变量名.stdout 变量名.rc
主机清单变量批量修改主机名,批量修改密码(每台机器都不同),剧本调用变量
  • 使用变量形式存放目录,用户名
  • 调用变量,2对花括号{{}},变量在模块中选项的开头,必须加引号
  • vars和group_vars是核心
  • facts变量,register变量,var_files

1)普通变量(vars)

#添加用户,创建目录(修改所有者)
[root@m01 /server/ansible]# cat 05.file_users.yml 
- hosts: all
  vars:
    dir: /lidao/996/
    user: lidao
  tasks:
    - name: 1.添加用户
      user:
        name: "{{ user }}"
        state: present

    - name: 2.创建目录
      file:
        path: "{{ dir }}"
        owner: "{{ user }}"
        group: "{{ user }}"
        mode: 0700
        state: directory

2)分组变量(group_vars)

  • 结构

3)facts变量

  • facts变量,运行剧本的时候,默认运行收集所有节点facts变量的任务。
  • 如果需要直接使用,主机名字,发行版本等信息。
  • 不需要则关闭,建议全局是关闭,使用的时候再去开启(剧本hosts和tasks中间写入gather_facts: true即可)
  • facts变量为例, template模块配合.j2文件, 分发带有ans变量的配置文件
  • copy模块分发没有变量的配置文件,压缩包
[root@m01 /server/ansible]# cat /etc/ansible/ansible.cfg 
#批量分发motd文件,显示指定的内容,这些就是facts变量中的部分内容
短主机名: {{ ansible_hostname }}
所有ip: {{ ansible_all_ipv4_addresses }}
内存总大小: {{ansible_memtotal_mb}}
系统发行版本: {{ansible_distribution}}
系统版本:  {{ansible_distribution_major_version }}
cpu架构: {{ ansible_architecture }}
系统版本昵称: {{ ansible_distribution_release }}
第1块网卡的ip地址: {{ ansible_default_ipv4.address }}
[root@m01 /server/ansible]# vim 06.show_facts.yml 
- hosts: all
  gather_facts: true
  tasks:
    - name: 1.调试,测试输出echo
      debug:
        msg: |
          1.主机名: {{ ansible_hostname }}
          2.所有ip: {{ ansible_all_ipv4_addresses }}
          3.内存总大小: {{ansible_memtotal_mb}}
          4.系统发行版本: {{ansible_distribution}}
          5.系统版本:  {{ansible_distribution_major_version }}
          6.cpu架构: {{ ansible_architecture }}
          7.系统版本昵称: {{ ansible_distribution_release }}
          8.第1块网卡的ip地址: {{ ansible_default_ipv4.address }}
  
    - name: 2.分发motd文件到/etc/motd
      template:
        src: ./files/motd.j2
        dest: /etc/motd
        
#使用copy模块不可以识别变量(是啥发啥),选项一样,这里需用template模块(支持变量),j2模板

4)register注册变量

  • 类似于shell中的ip=`hostname -I`中反引号的功能
  • 实现反引号创建变量功能,命令结果创建成了变量
  • 使用的时候输出的是json形式的数据, 形式:变量.选择输出,常用的有:
  • name.stdout 正常输出,标准输出
  • name.rc 返回值
  • name.stderr 错误输出
若直接使用变量,不选择输出。是以下形式,会全输出至屏幕
ok: [172.16.1.31] => {
    "msg": {
        "changed": true,
        "cmd": "hostname -I|awk '{print $1}'",
        "delta": null,
        "end": null,
        "failed": false,
        "msg": "Command would have run if not in check mode",
        "rc": 0,
        "skipped": true,
        "start": null,
        "stderr": "",
        "stderr_lines": [],
        "stdout": "",
        "stdout_lines": []
    }
}
[root@m01 /server/ansible]# vim 07.ip_dir.yml
- hosts: all
  tasks:
    - name: 1.创建ip地址变量
      shell: hostname -I|awk '{print $1}'
      #上一步的结果创建成了变量
      register: ip_addr

    - name: 1.5调试
      debug:
        msg: "{{ip_addr }}"

    - name: 2.调用变量,创建目录
      file:
        path: "{{ ip_addr.stdout }}"
        state: directory

5)主机清单变量-批量修改主机名

  • 主机清单中创建变量
  • shell中修改
  • 临时修改:hostname 新主机名(重启失效)
  • 永久修改:hostnamectl set-hostname 新主机名

总结

  • 剧本(playbook)
  • 变量:vars,group_vars
  • 写剧本:nginx,tomcat,rsync,nfs,lsyncd,(二进制安装的),,…..
  • 增加模块:
  • lineinfile/replace
  • unarchive
  • debug

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

作者

2632782425@qq.com

相关文章

helm入门

1.1helm概述 1)什么是helm? 2...

读出全部

k8s部署医疗服务

1)编写资源清单并提交到gitee 2)je...

读出全部

hpa实战

1.部署修仙业务,要求副本数量为1;2.使用...

读出全部
romabetmegabahissonbahissonbahis girişbetvolebetvole girişmarsbahismarsbahis girişcasibomcasibom girişcasibom güncel girişcasibomcasibom girişcasibom güncel girişmarsbahismarsbahis girişizmir escortbetvolebetvole girişbetvole güncel girişbetvolebetvole girişbetvole güncel girişhacklink satın al