当前位置: 首页 > news >正文

Ansible自动化部署K8s集群一 Ansible的基础使用实战

一、Ansible介绍

        1.安装ansible:        yum  install  ansible -y

        2.ansible的架构图:

        3.ansible四部分:

        inventory:ansible管理的主机信息,包括ip地址、ssh端口、账号和密码等

        modules:任务均由模块完成

        plugins:增加ansible的核心功能

        playbooks:模块化当以一些列任务供外部调用

        4.主机清单(示例代码):

[webservers]
192.168.142.152
192.168.142.153
www.xiao.org

        5.命令行使用:ad-hoc可以输入内容快速执行某个操作

          远程连接主机认证:

[webservers]
192.168.142.152  ansible_ssh_user=root ansible_ssh_pass='xiao'
192.168.142.153  ansible_ssh_user=root ansible_ssh_pass='xiao'

          ssh密钥对认证(ansible是基于ssh进行远程连接执行命令:

[webservers]
192.168.142.152  ansible_ssh_user=root ansible_ssh_key=/root/.ssh/id_rsa
192.168.142.153  ansible_ssh_user=root

          上述的密钥信息也可以在ansible.cfg配置文件中指定

          另外,也可以先建立起控制主机和受控主机之间的ssh的免密连接,通过在控制主机上创建一对密钥对,将公钥通过ssh_copy_id  root@192.168.142.152/3传递到被控主机上,可以顺利执行ansible的ad-hoc命令。

        6.ansible命令行常用的选项:

          -C / --check        playbook.yml的语法检查,不执行任何操作

          -e  var=test         设置附加变量 key=value

          --user=xiao         ssh连接的用户,默认为none

          -k                        ssh连接用户的密码

          -b / --become       提权,默认为root

          -K                          提权密码

        7.命令行使用: 

            ansible  all  -m  ping                     网络连通性测试

            ansible  all  -m  shell    -a"ls  /root"  -u  root  -k            在命令行执行脚本(查看/root信息)

            ansible  webservers  -m  copy  -a  "src=/etc/hosts  dest=/tmp/host"          指定webservers主机组中的主机,使得将本主机的指定文件复制到指定主机组的指定目录下。

二、ansible的常用模块

        1.shell(在远程主机上执行脚本):

            ansible  webservers -m  shell    -a  "ls  /root" 

            其中如果执行多条shell语句可以使用分号将其分隔开。

        2.copy(将文件复制到远程主机):

            ansible  webservers  -m  copy  -a  "src=/etc/hosts  dest=/tmp/host  mode=777  owner=xiao group=xiao  backup=yes"

            上述指令的作用时将指定的文件复制到远程主机上并指定复制后的主机的属主和文件的权限,其中的backup表示如果远程主机上该文件存在,会将其创建为一个备份。

        3.file(管理文件和文件属性):

            ansible webservers  -m  file  -a "path=/tmp/hosts  state=absent"

            上述命令表示删除远程主机上的path路径的文件或者递归删除目录

            上述中state参数的值决定对文件进行什么操作,其中absent表示删除,present表示创建

        4.yum(软件包管理):

            ansible  webservers  -m yum  -a  "name=httpd  state=latest"

           该条命令表示在远程主机上安装最新版本的http服务,其中state可以取absent(卸载)  present(安装yum源中的软件包)  latest(安装最新的软件)

        5.systemd(管理服务):

            ansible  webservers  -m  systemd  -a  "name=httpd  state=started  enabled=yes"

            该命令表示启动httpd服务并使其开机自启动,也可以设定其服务状态为stopped  restarted  reloaded

        6.unarchive(解压):

            ansible  webservers  -m unarchive  -a "src=test.tar.gz  dest=/tmp"

            该命令表示将本机文件的压缩文件解压到远程主机的指定目录上

        7.debug(执行过程中打印语句):

            ansible  webservers  -m  debug  -a  "var=hostvars[inventory_hostname]"

            该命令表示打印远程主机的所有变量

三、Playbook的简单操作

        1.主机和用户: 

- hosts: webserversremote_user: xiaobecome: yesbecome_user: yes

          2.定义变量:

#命令行传递:
-e var=test
#主机变量和组变量(在inventory中定义变量)#主机变量
[webservers]
192.168.142.152  ansible_ssh_user=root  hostname=web1
192.168.142.153  ansible_ssh_user=root  hostname=web2#主机组变量
[webservers:vars]
ansible_ssh_user=root

          单文件存储:

           /etc/ansible/group_vars/all.yml        对所有的主机有效

           /etc/ansible/host_vars/webservers.yml        只对webservers主机组的主机生效

          在playbook中自定义变量:

           - hosts: webservers

              vars:

                  http_port: 80

                   server_name: www.xiao.org

           register变量(将其他命令的运行结果保存下来作为变量的值):

           -shell:  /etc/passwd

             register: result

           -debug:

                var: result

        3.任务列表:

tasks:
- name: 安装nginx最新版yum: pkg=nginx  state=latest

        4.任务控制:

        可以将大的playbook中的多个任务进行标记,可以让其只执行有特殊标记的任务,或者让其跳过执行有特殊标记的任务。

tasks:
- name; 安装nginx最新版yum: pkg=nginx state=latesttags: install
- name: 写入nginx的配置文件template: src=/test/nginx.conf dest=/etc/nginx/nginx.conftags: config

        ansible-playbook  test.yml --tags "install"        表示只执行带有install标签的任务

        ansible-playbook test.yml  --skip-tags "install"        表示跳过带有install标签的任务

        5.流程控制:

tasks:
- name: 仅在192.168.142.152上执行任务debug; msg= {{ansible_default_ipv4.address}}when: ansible_default_ipv4.address == '192.168.142.152'

          循环:

tasks:
-name; 批量创建用户user: name={{ item }} state=present  groups=xiaowith_items:- testuser1- testuser2

        常用的循环语句:

        with_items        标准循环

        with_fileglob        遍历目录文件

        with_dict        遍历字典

http://www.lryc.cn/news/534678.html

相关文章:

  • ZooKeeper Watcher 机制详解:从注册到回调的全过程
  • flutter_tools/gradle Unsupported class file major version 65 问题解决
  • C++设计模式 - 模板模式
  • mysql查缺补漏
  • 跨越边界,大模型如何助推科技与社会的完美结合?
  • 哪吒闹海!SCI算法+分解组合+四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测
  • 前端【技术方案】浏览器兼容问题(含解决方案、CSS Hacks、条件注释、特性检测、Polyfill 等)
  • 荣耀手机Magic3系列、Magic4系列、Magic5系列、Magic6系列、Magic7系列详情对比以及最新二手价格预测
  • 后盾人JS -- 模块化开发
  • CNN卷积神经网络多变量多步预测,光伏功率预测(Matlab完整源码和数据)
  • 深入 JVM 虚拟机:字符串常量池演变与 intern() 方法工作原理解析
  • 单向/双向,单层/多层RNN输入输出维度问题
  • chromium-mojo
  • ZooKeeper 的典型应用场景:从概念到实践
  • 缓存组件<keep-alive>
  • YouBIP 项目
  • react概览webpack基础
  • DeepSeek 助力 Vue 开发:打造丝滑的步骤条
  • STM32的HAL库开发---高级定时器---互补输出带死区实验
  • Vue07
  • 【CXX-Qt】2 CXX-Qt #[cxx_qt::bridge] 宏指南
  • 鸿蒙接入支付宝SDK后模拟器无法运行,报错error: install parse native so failed.
  • 局域网使用Ollama(Linux)
  • Deepseek系列从v3到R易背面经版
  • Redis深入学习
  • 《从入门到精通:蓝桥杯编程大赛知识点全攻略》(十一)-回文日期、移动距离、日期问题
  • 在Uniapp中使用阿里云OSS插件实现文件上传
  • 9 数据流图
  • IDEA查看项目依赖包及其版本
  • 【数据结构】_栈与队列经典算法OJ:栈与队列的互相实现