• 【RHCE】作业:firewall-cmd操作&ansible自动化运维入门


    练习一、firewall-cmd: 设置访问web服务器的80端口时转发到8081端口

    Ⅰ、准备工作,准备好8081的验证页面&开启firewalld服务

            vim /etc/httpd/conf.d/myhosts.conf【复习,这个是自己创建虚拟主机的.conf文件】

            因为要验证8081端口这里选择基于同一IP不同端口配置

            

             然后添加个首页验证文件

            

             

    Ⅱ、启动firewalld服务并配置转发方法【2选1】

            富规则方法转发:[root@localhost services]# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.174.0/24" forward-port port="80" protocol="tcp" to-port="8081" to-addr="192.168.174.128"'

                            

             富规则设置完了记得firewall-cmd --reload        

            富规则添加成功 【验证也转发成功了 】

            

     正常方法转发:firewall-cmd --add-forward-port=port=5423:proto=tcp:toport=8081:toaddr=192.168.233.100

    练习二、ansible:

    ① 使用shell或者command模块创建用户:testuser1

    ②使用script/shell/command模块执行脚本: 脚本内容为:echo "Hello World"

    ③使用copy模块:将管理主机(manage)上 /root/ansible/copyfile 文件拷贝到 被管理主机node1上的/home/testuser1目录下

    ④使用blockinfile模块:向/home/testuser1/copyfile文件中插入:Hello World 在Hello World之后插入: Hello Shaanxi 在Hello World之前插入:Hello China 删除 Hello World 替换 Hello Shaanxi 为 Hello Xian

    Ⅰ、准备工作:准备三台虚拟机,依次命名(修改hostname)为manage  node1  node2方便管理

            在管理主机manage上:

            [root@manage ~]# yum install epel-release.noarch -y

            [root@manage ~]# yum install ansible -y

             vim /root/ansible/inventory

            []里是分组可以少设置几个,然后上边的node和IP要对应[:children相当于继承什么组]

            

            然后去配置免密登录

    [root@manage ansible]# ssh-keygen -t rsa

    [root@manage ansible]# ssh-copy-id root@node1的IP

    [root@manage ansible]# ssh-copy-id root@node2的IP

    vim /root/ansible/ansible.cfg

     

    【下一次作业里边我不知道配置什么出问题ssh连接不上node1和node2的ansible用户了,所以建议这里的remote_user=root后面提权那些相当于没用了,】 

    1. [defaults]
    2. #清单文件的配置
    3. inventory=/root/ansible/inventory
    4. #远程登录的用户
    5. remote_user=ansible
    6. #是否询问ssh登录密码(因为我们配置了免密登录.配置成false
    7. #ask_pass=false
    8. #sudo切换的用户
    9. sudo_user=root
    10. #是否询问切换的密码
    11. ask_sudo_pass=False
    12. #是否检查主机的密钥
    13. #ssh有两种认证方式:基于口令的(用户名和密码登录false),基于公钥的认证(免密登录true
    14. host_key_checking=true
    15. #日志存放位置
    16. log_path=/var/log/ansible.log
    17. #配置远端执行py文件的临时目录
    18. remote_tmp=~/.ansible/tmp
    19. [privilege_escalation]
    20. #是否切换用户
    21. become=True
    22. #特权升级切换的方法
    23. become_method=sudo
    24. #切换到哪个用户
    25. become_user=root
    26. #是否询问密码
    27. become_ask_pass=False

            【可以验证一下】

     Ⅱ、开始操作【注意ansible管理需要一直在ansible目录下操作】

            ① 使用shell或者command模块创建用户:testuser1

            【在上边准备工作里把.cfg文件配置好了他创建用户的时候会自己提权的】

            [root@manage ansible]# ansible node1 -m shell -a 'sudo useradd testuser1'

            

            【在node1上验证一下,创建成功】 

             

             ②使用script/shell/command模块执行脚本: 脚本内容为:echo "Hello World"

            ansible node1 -m shell -a 'echo "Hello World"'

     

             ③使用copy模块:将管理主机(manage)上 /root/ansible/copyfile 文件拷贝到 被管理主机node1上的/home/testuser1目录下

            记得先在管理主机下创建这个文件再随便编辑点内容方便验证【还是别放内容了0.o,没想到第四题要在里边放内容】

            ansible node1 -m copy -a 'src=/root/ansible/copyfile dest=/home/testuser1'

     

             ④使用blockinfile模块:向/home/testuser1/copyfile文件中插入:Hello World 在Hello World之后插入: Hello Shaanxi 在Hello World之前插入:Hello China 删除 Hello World 替换 Hello Shaanxi 为 Hello Xian

            插入hello world

            ansible node1 -m blockinfile -a 'path=/home/testuser1/copyfile block="Hello

     

             在hello world之后插入hello shaanxi 在hello之前插入hello china

            【这里注意加入mark标签来标记一下他们要不然就会发生替换的情况了】

            ansible node1 -m blockinfile -a 'path=/home/testuser1/copyfile block="Hello Shaanxi" insertafter="Hello World" marker="{mark} test2" state=present'
             ansible node1 -m blockinfile -a 'path=/home/testuser1/copyfile block="Hello China" insertbefore="Hello World" marker="{mark} test3" state=present'

             一系列操作后就成功的出现了bug

            原因是:插入的时候是在hello world之前和之后插入的,此时插入的内容算在标签里面,所以当执行后边删除操作的时候把hello world那个标签删掉相当于把所有内容删掉了,我的想法是在写标记位的时候直接写标签,不写真正的文本内容了【相当于把一部分里有三部分换成看着只有三部分了】

    1. [root@manage ansible]# ansible node1 -m blockinfile -a 'path=/home/testuser1/copyfile block="Hello World" marker="{mark}# test1" state=present'
    2. [root@manage ansible]# ansible node1 -m blockinfile -a 'path=/home/testuser1/copyfile block="Hello Shaanxi" insertafter="^END" marker="{mark}# test2" state=present'
    3. [root@manage ansible]# ansible node1 -m blockinfile -a 'path=/home/testuser1/copyfile block="Hello China" insertbefore="^BEGIN" marker="{mark}# test3" state=present'

     

             【现在就简单了,直接根据他们的标签内容进行操作即可】

            删除hello world 和把hello Shaanxi内容换成xian

     

    【成功】 

  • 相关阅读:
    SSM房屋租赁系统
    springboot中使用页面国际化-i18n
    Mysql之高可用方案浅析
    Web3.0代币将如何颠覆传统内容创作模式?
    Tuxera NTFS2024破解版本下载
    ReentrantLock、ReentrantReadWriteLock、StampedLock
    Blazor组件自做十二 : Blazor Pdf Reader PDF阅读器 组件(更新)
    【ESP 保姆级教程】疯狂EspNow篇 —— 案例:ESP8266 + EspNow简单实剖析底层实现原理
    多维度查询的最佳实践
    谈一谈工作中的前后端功能开发范围
  • 原文地址:https://blog.csdn.net/weixin_53428697/article/details/127685139