做自媒体你不得不知道的视频网站,域名查询ip网站,app网站样式,网页微信版官方下载ansible自动化运维 1#xff0c;编写ansible的仓库#xff08;比赛已经安装#xff0c;无需关注#xff09; 1、虚拟机右击---设置---添加---CD/DVD驱动器---完成---确定 2、将ansible.iso的光盘连接上#xff08;右下角呈绿色状态#xff09; 3、查看光盘挂载信息 df -h… ansible自动化运维 1编写ansible的仓库比赛已经安装无需关注 1、虚拟机右击---设置---添加---CD/DVD驱动器---完成---确定 2、将ansible.iso的光盘连接上右下角呈绿色状态 3、查看光盘挂载信息 df -h 4、挂载光盘/dev/sr1 mount /dev/sr1 /opt df -h 5、编写ansible的仓库 cd /etc/yum.repos.d/ ls vim ansible.repo 1 [Ansible] 2 nameAnsible 3 baseurlfile:///opt 4 gpgcheck0 5 enabled1 yum clean all #清理缓存 yum makecache #建立缓存 yum repolist #刷新 2部署ansible前面的仓库就是用来部署ansible的 CentOS7安装ansible 更新yum仓库的镜像源 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 安装epel扩展包扩展包才有ansible软件包 wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo 安装ansible yum install -y ansible 5、查询ansible是否安装 rpm -q ansible 3ansible生效配置文件 1、当系统中有多个absible的配置文件时只能有一个生效谁的优先级越大谁就生效 2、查看生效的配置文件 ansible --version 3、要求使用普通用户来做ansible并且ansible的生效文件有要求例如在用户的家目录 cp /etc/ansible/ansible.cfg . ls ansible --version 4、因为当前生效的配置文件为/root/ansible.cfg所以必须修改/root/ansible.cfg的文件才能往后面做 4清单文件 1、相当于老师手中的花名册清单文件中有哪些主机就说明这些主机可以被控制节点管理 vim /root/ansible.cfg 14 inventory /root/inventory 指的清单文件的位置 15 #inventory /etc/ansible/hosts 默认清单文件存放的位置 2、创建指定的清单文件 vim /root/inventory [test] #表示主机组的名字 192.168.23.142 #表示主机组下面的主机 3、验证清单文件是否生效简称列出清单树 ansible-inventory --graph 备注带表示组名 5ad-hoc临时命令 命令格式ansible 主机/主机组 [-m 模块] -a 命令 1、使用临时命令测试ls报错原因因为没有输入密码 ansible test -a ls 2、再次使用临时命令 -k 指定密码 ansible test -a ls -k 3、使用临时命令查看对端的当前所在路径 ansible test -a pwd -k 4、使用临时命令查看对端的主机名 ansible test -a hostname -k 5、使用临时命令在对端主机上的当前所在路径创建文件 ansible test -a touch 1.txt -k 6、使用临时命令查看对端的当前所在路径的文件 ansible test -a ls -k 6免密 因为当前是root用户所以只需要做以下2步 1、在主配置文件中取消指纹验证 vim /root/ansible.cfg 72 host_key_checking False 73 #host_key_checking False 2、在清单文件中添加密码 vim /root/inventory [all:vars] ansible_password123456 [test] 192.168.23.142 3、再次测试 ansible test -a useradd user1 ansible test -a id user1 7.修改tab的缩进-为playbook做准备 vim ~/.vimrc set number ts2 sw2 et 8.帮助 1、统计ansible中有多少个模块有帮助 ansible-doc -l | wc -l 2、在模块中过滤出user ansible-doc -l | grep user 3、查看user的帮助 ansible-doc user /EX 9.集中缩进 1、跳转到要缩进的行 2、按ctrl v进入可视化块模式 3、按↑↓键选中要缩进的行 4、按I在行首输入 5、按tab缩进 6、按ecs两下 10.编写简单的playbook Ansible常用模块列表 模块名称 功能描述 ping 检查指定节点机器是否还能连通。 command 在远程主机执行命令不支持管道符和重定向。 raw 执行原始的命令不通过模块子系统。 shell 类似于command模块但支持更全面的功能包括管道和重定向。 script 在远程主机上执行本地脚本。 template 将模板文件复制到远程主机并支持变量替换。 yum 管理RedHat/CentOS系统的软件包。 apt 管理Ubuntu/Debian系统的软件包。 copy 复制文件到远程主机。 fetch 从远程主机获取文件到本地。 file 管理文件和目录的属性。 unarchive 解压归档文件到远程主机。 user 管理用户账户。 group 管理用户组。 service 管理系统服务。 firewalld 管理firewalld防火墙规则。 cron 管理定时任务。 dnf 管理Fedora系统的软件包类似于yum。 synchronize 同步本地和远程主机之间的文件和目录。 wait_for 等待某个条件满足后再继续执行。 pause 暂停执行一段时间。 fail 人为地使任务失败并显示错误信息。 debug 输出变量的值用于调试。 创建用户 vim user.yml --- #表示playbook的开头可省但不建议省 - name: useradd # - name表示解释说明解释此playbook的功能 hosts: test #表示此playbook应该到哪些主机组和主机上如果有多个用,隔开 tasks: #接下来具体要实施的任务 - name: Add the user johnd #- name解释说明对此任务的解释说明 user: #模块名 name: qq1 #创建用户的名 uid: 1010 #用户的uid ansible-playbook user.yml 备注红色表示错误黄色表示更改绿色表示没有更改 根据红色报错信息修正错误之后 验证实验效果 ansible test -a grep qq1 /etc/passwd 创建组 1、在模块中过滤出group ansible-doc -l | grep group 2、查看user的帮助 ansible-doc group /EX 3编写playbook vim group.yml --- - name: groupadd hosts: test tasks: - name: Ensure group somegroup exists group: name: group1 state: present 4根据检查排错 ansible-playbook group.yml 5验证实验效果 ansible test -a tail -n 1 /etc/group 安装软件包开启服务 管理软件包的模块 ansible-doc -l | grep yum ansible-doc yum /EX 管理服务的模块 ansible-doc -l | grep service ansible-doc service /EX 编写vim httpd.yml 1 --- 2 - name: web 3 hosts: test 4 tasks: 5 - name: install the latset version of Apache 6 yum: 7 name: httpd 8 state: latest 9 - name: Start service httpd, if not started 10 service: 11 name: httpd 12 state: started 13 enabled: yes 验证playbook是否配置成功 ansible-playbook httpd.yml 验证实验效果 ansible test -a systemctl status httpd 修改httpd的端口号默认80端口 替换配置文件中某一行的模块 ansible-doc -l | grep line ansible-doc lineinfile /EX 编辑playbook vim apache.yml --- - name: listen hosts: test tasks: - name: Ensure the default Apache port is 8080 lineinfile: path: /etc/httpd/conf/httpd.conf regexp: ^Listen insertafter: ^#Listen line: Listen 8080 state: present backup: yes 检验配置是否成功ansible-playbook apache.yml 验证配置效果 ansible test -a grep ^Listen /etc/httpd/conf/httpd.conf 复制文件 查找复制文件的模块 ansible-doc -l | grep copy ansible-doc copy /EX 编辑playbook vim copy.yml --- - name: copy hosts: test tasks: - name: Copy file with owner and permissions copy: src: /etc/fstab dest: /var/tmp/fstab 排查错误 ansible-playbook copy.yml 验证实验结果 ansible test -a ls -ld /var/tmp/fstab 11.循环loop 1批量创建用户未循环操作vim useradd.yml --- - name: loop useradd hosts: test tasks: - name: Add the user user: name: qq10 - name: Add the user user: name: qq11 - name: Add the user user: name: qq12 排查错误 ansible-playbook useradd.yml 验证实验结果 ansible test -a tail -n 3 /etc/passwd 2批量创建用户使用循环操作vim useradd1.yml --- - name: loop hosts: test tasks: - name: Add the user user: name: {{ item }} loop: - wx1 - wx2 - wx3 #{{ item }}跟loop是固定搭配 #loop下面就行你要循环的名字 ansible-playbook useradd1.yml ansible test -a tail -n 3 /etc/passwd 3通过循环批量创建组 vim group1.yml --- - name: groupadd loop hosts: test tasks: - name: Ensure group somegroup exists group: name: {{ item }} state: present loop: - group10 - group20 - group30 ansible-playbook group1.yml ansible test -a tail -n 3 /etc/group 12利用变量实现模板复制 查看帮助 ansible-doc -l |grep setup ansible-doc setup /EX 使用临时命令找变量 查找ipv4相关的变量 ansible test -m setup -a filter*ipv4* 查找bios相关的变量 ansible test -m setup -a filter*bios* 查找cpu相关的变量 ansible test -m setup -a filter*cpu* 1、编写模板需求内容如下 被控节点的ipv4地址 被控节点的bios版本 被控节点的CPU颗数 2、编写模板 vim test.j2 {{ ansible_default_ipv4.address }} {{ ansible_bios_version }} {{ ansible_processor_vcpus }} 3、编写playbook将test.j2的模板复制到被控节点并显示具体值 复制带有变量的模板 ansible-doc -l | grep temp ansible-doc template 编写playbook vim template.yml --- - name: template hosts: test tasks: - name: Template a file to /etc/files.conf template: src: test.j2 dest: /tmp/test.txt ansible-playbook template.yml ansible test -a cat /tmp/test.txt 使用普通用户 要求使用user1用户部署ansible生效的配置文件为/home/user1/ansible.cfg清单文件路径为/home/user1/inventory 1、查看当前生效的配置文件 ansible --version 2、修改生效的配置文件 cp /etc/ansible/ansible.cfg . ls 3、修改清单文件 vim ansible.cfg inventory /home/user1/inventory inventory /etc/ansible/hosts 4、修改清单文件内容 vim /home/user1/inventory [dev] 192.168.23.142 图形化的方式显示 Ansible 库存inventory的结构 ansible-inventory --graph 5、使用临时命令做测试报错 ansible dev -a ls 这个错误信息表明Ansible 尝试通过 SSH 连接到目标主机但被拒绝了。拒绝的原因可能是以下几种情况之一 SSH 密钥问题目标主机拒绝了你的 SSH 密钥。这可能是因为你使用的密钥没有被添加到目标主机的 ~/.ssh/authorized_keys 文件中。用户名或密码错误如果你使用的是密码认证方式那么可能是用户名或密码错误。SSH 配置问题目标主机的 SSH 配置可能不允许你使用的认证方式。防火墙或网络问题目标主机的防火墙可能阻止了 SSH 连接或者存在其他网络问题。 为了进一步排查这个问题你可以尝试以下步骤 检查 SSH 密钥确保你使用的 SSH 密钥已经被添加到目标主机的 ~/.ssh/authorized_keys 文件中。检查用户名和密码如果你使用的是密码认证方式确保你输入的用户名和密码是正确的。检查 SSH 配置查看目标主机的 SSH 配置文件通常是 /etc/ssh/sshd_config确保配置允许你使用的认证方式。检查防火墙和网络配置确保目标主机的防火墙没有阻止 SSH 连接并且网络配置正确。 ansible dev -a ls -k SSH password: 被控节点的密码 ansible dev -a touch 1.txt -k SSH password: 被控节点的密码 ansible dev -a ls -k SSH password: 被控节点的密码 6、免密 vim ansible.cfg #取消指纹验证 72 host_key_checking False 73 #host_key_checking False #远程用户使用root身份执行 109 remote_user root 110 #remote_user root 设置密码 vim inventory 1 [all:vars] 2 ansible_password123456 3 [dev] 4 192.168.23.142 测试验证实验结果 ansible dev -a useradd stu1 ansible dev -a id stu1 7loop循环-未 vim loop.yml --- - name: loop hosts: dev tasks: - name: Add the user user: name: student1 - name: Add the user user: name: student2 验证实验效果 ansible-playbook loop.yml ansible dev -a tail -n 2 /etc/passwd 8loop循环 vim loop.yml --- - name: loop hosts: dev tasks: - name: Add the user user: name: {{ item }} loop: - stu10 - stu11 - stu12 ansible-playbook loop.yml ansible dev -a tail -n 3 /etc/passwd 9创建组 vim group.yml --- - name: groupadd hosts: dev tasks: - name: Ensure group somegroup exists group: name: {{ item }} state: present loop: - group10 - group20 - group30 ansible-playbook group.yml ansible dev -a tail -n 3 /etc/group 10item.name、item.uid、item.groups vim loop.yml --- - name: loop hosts: dev tasks: - name: Add the user user: name: {{ item.name }} uid: {{ item.uid }} group: {{ item.group }} loop: - name: userq1 uid: 1050 group: group10 - name: userq2 uid: 1040 group: group20 - name: userq3 uid: 1030 group: group30 ansible-playbook loop.yml ansible dev -a tail -n 3 /etc/passwd ansible dev -a id userq1 ansible dev -a id userq2 ansible dev -a id userq3