Ansible的简介及部署

1. ansible简介

1.1 什么是ansible

ansible是一款开源自动化平台,是一个配置管理工具,自动化运维工具

1.2 ansible的优点

  1. 跨平台支持
  2. 人类可读自动化: ansible提供linux,Windows,unix和网络设备的无代理支持,适用于物理、虚拟、云和容器环境
  3. 完美描述应用:playbook
  4. 轻松管理版本控制:playbook是纯文本,可视作源代码
  5. 支持动态清单
  6. 编排可与其他系统轻松集成:puppet、jenkins
  7. 基础架构即代码
  8. 减少人为错误

运行playbook时,如果目标主机处于正确状态,则不会进行任何更改。

1.3 安装ansible
1. 在虚拟机上安装ansible,充当控制节点

yum install -y ansible

2. 查看ansible版本信息

ansible --version

 

3. 使用setup模块验证python

ansible localhost -m setup | grep python_version

 

2. 部署ansible

2.1 构建ansible清单

  • 清单:定义了ansible将要管理的一批主机

2.1.1. 静态清单

注:如果填写的是主机名,请确保可以解析主机名(/etc/hosts)

每行一个,填写主机名或ip,如:

还可以定义主机组:

注:一台主机可以存在于多个主机组'

2.1.2 定义嵌套组

ansible主机清单可以包含多个主机组构成的组,如:

2.1.3 通过范围简化主机规格

可以指定主机名称或ip范围或者数字和字母范围


2.1.4 验证清单

ansible all --list-hosts

2.1.5 默认清单位置

  • /etc/ansible/hosts    #一般不使用,而是自己新建

2.1.6 动态清单

可以从开源社区的脚本中获取

练习:

列出清单中所有受管主机

ansible all --list-hosts

列出不属于某个组的主机

ansible ungrouped --list-hosts

 

列出属于webservers组的主机

ansible dbservers --list-hosts

 

自定义清单

mkdir demo    #建立目录

列出主机


2.2 管理ansible配置文件

2.2.1 配置ansible

配置文件:

  1. /etc/ansible/ansible.cfg    #基本配置文件,如果找不到其他配置文件,使用这个
  2. ~/.ansible.cfg        #如果存在此文件且当前工作目录中没有ansible.cfg,此文件替代/etc/ansible/ansible.cfg
  3. ./ansible.cfg        #当前目录中的ansible.cfg,优先级最高


显示使用的配置文件

ansible dbservers --list-hosts -v

管理配置文件中的设置:

  • [defaults]        #部分设置ansible操作的默认值
  • [privilege_escalation]    #配置ansible如何在受管主机上执行特权升级

例:

vim ansible.cfg


注:如果登录的不是root用户,可以使用sudo进行权限下放。且做好免密登录
 

2.3 运行临时命令

使用临时命令可以快速测试和更改,不需要编写playbook

2.3.1 格式:

  • ansible host-pattern -m module [-a 'module arguments'] [-i inventory]

2.3.2 检查能否在受管主机上运行python模块


2.3.3 使用临时命令通过模块执行任务

  • ansible-doc -l    #列出所有模块
  • ansible-doc ping    #查看ping模块帮助文档

ansible模块
文件模块:    -copy:将本地文件复制到受管主机
        -file:设置文件的权限和其他属性
        -lineinfile:确保特定行是否在文件中
        -synchronize:使用rsync同步内容

系统模块:    -firewalld:使用firewalld管理任意端口和服务
        -reboot:重启 
        -service:管理服务
        -user:添加、删除和管理用户账户

Net Tools模块:    -get_url:通过http、https、或者ftp下载文件
        -nmcli:管理网络
        -uri:与web服务交互


例:

使用user模块确保huayu用户存在于server1.huayu.com 且 uid=1000

通过ansible的command模块,在受管主机上运行命令:

ansible 加上-o参数,单行显示

注:command模块允许执行远程命令,但这些命令不是shell处理,无法访问shell环境变量,所以不能执行重定向、传送等操作

使用command模块执行临时命令

ansible localhost -m command -a 'id'

ansible localhost -m command -a 'id' -u student    #通过-u选项使用huayu用户进行连接并执行id命令

 

使用copy模块

1.首先使用student用户,因为huayu用户没有写权限,会失败

ansible localhost -m copy -a 'content="westos ansible\n" dest=/etc/motd' -u student

2.使用特权升级

 

使用主机组一次更改server1和server2


可以看到server1显示SUCCESS,server2显示CHANGED,因为server1已经处于正确状态


查看

  • 1
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对ansible roles项目部署,我可以给你提供以下步骤: 1. 在ansible控制机上安装ansible 2. 编写ansible playbook,定义roles、hosts、tasks等信息 3. 在ansible控制机上配置hosts文件,指定目标主机 4. 执行ansible playbook,部署项目 具体步骤如下: 1. 在ansible控制机上安装ansible ``` $ sudo apt-get update $ sudo apt-get install ansible ``` 2. 编写ansible playbook 在ansible控制机上创建一个新的目录,用于存放playbook文件和roles文件夹。 ``` $ mkdir myproject $ cd myproject ``` 在myproject目录下创建一个名为`site.yml`的文件,用于定义playbook。 ``` --- - hosts: webserver roles: - common - webapp ``` 在myproject目录下创建一个名为`roles`的文件夹,用于存放roles。 ``` $ mkdir roles ``` 在roles目录下创建两个子目录,分别为`common`和`webapp`。 ``` $ cd roles $ mkdir common webapp ``` 在common目录下创建一个名为`tasks`的文件夹,用于存放tasks。 ``` $ cd common $ mkdir tasks ``` 在common/tasks目录下创建一个名为`main.yml`的文件,用于定义tasks。 ``` --- - name: Install common packages apt: name: "{{ item }}" state: present with_items: - python - python-pip - git ``` 在webapp目录下创建一个名为`tasks`的文件夹,用于存放tasks。 ``` $ cd ../webapp $ mkdir tasks ``` 在webapp/tasks目录下创建一个名为`main.yml`的文件,用于定义tasks。 ``` --- - name: Clone webapp repository git: repo: https://github.com/myuser/myproject.git dest: /var/www/myproject version: master become: yes - name: Install webapp dependencies pip: requirements: /var/www/myproject/requirements.txt become: yes - name: Start webapp service systemd: name: myproject state: started enabled: yes ``` 3. 在ansible控制机上配置hosts文件 在ansible控制机上打开/etc/ansible/hosts文件,添加目标主机的IP地址或域名。 ``` [webserver] 192.168.1.100 ``` 4. 执行ansible playbook,部署项目 在myproject目录下执行以下命令,执行ansible playbook。 ``` $ ansible-playbook site.yml ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值