No menu items!
No menu items!
More

    [Ansible] Các phương thức nối chuỗi

    Việc nối chuỗi trong Ansible cho phép bạn xây dựng các chuỗi động để sử dụng trong các tác vụ khác nhau, chẳng hạn như tạo tên file hoặc thư mục, tạo câu lệnh shell hoặc thực thi các module của Ansible. Khi bạn nối chuỗi trong Ansible, bạn có thể thêm bất kỳ ký tự hoặc giá trị nào vào chuỗi, bao gồm cả biến Ansible hoặc kết quả trả về từ các task Ansible trước đó. Việc nối chuỗi là một phần quan trọng trong việc xây dựng các playbook và role phức tạp trong Ansible.

    Trong Ansible, để nối các chuỗi với nhau, chúng ta có thể sử dụng module join hoặc kết hợp các biến với dấu +.

    Ví dụ 1:

    - hosts: localhost
      vars:
        server_name: "web"
        domain_name: "example.com"
      tasks:
        - name: Sử dụng module join
          debug:
            msg: "{{ ['Server', server_name, 'in', domain_name] | join(' ') }}"
        
        - name: Kết hợp biến với dấu +
          debug:
            msg: "Server " + server_name + " in " + domain_name

    Kết quả sẽ hiển thị như sau:

    TASK [Sử dụng module join] ******************************************
    ok: [localhost] => {
        "msg": "Server web in example.com"
    }
    
    TASK [Kết hợp biến với dấu +] ****************************************
    ok: [localhost] => {
        "msg": "Server web in example.com"
    }

    Ví dụ 2:

    Ngoài sử dụng phương thức join, bạn cũng có thể sử dụng mỗi toán tử + để nối chuỗi trong Ansible. Ví dụ:

    - name: Example of concatenating strings using +
      debug:
        var: "my_string" + "_" + "suffix"

    Kết quả sẽ là chuỗi my_string_suffix.

    Ví dụ 3:

    Bạn cũng có thể sử dụng filter format để nối chuỗi trong Ansible. Ví dụ:

    - name: Example of concatenating strings using format filter
      debug:
        msg: "{{ 'my_string_{}_{}'.format('suffix1', 'suffix2') }}"

    Kết quả sẽ là chuỗi my_string_suffix1_suffix2.

    Ví dụ 4:

    Bạn có thể sử dụng biểu thức Jinja2 để chèn biến “ansible_url” vào trong câu lệnh của bạn. Ví dụ:

    - name: Print Zabbix system information
      debug:
        msg: "{{ { 'database_name': zabbix_dbname, 'database_username': 'root', 'database_password': zabbix_dbpasswd, 'url': 'http://' + ansible_url + '/zabbix' } }}"

    Trong đó, biến “ansible_url” được chèn vào trong chuỗi “http://” và “/zabbix” bằng cách sử dụng biểu thức nối chuỗi “+”. Khi Ansible thực hiện task này ta sử dụng biến ansible_host để lấy địa chỉ IP của remote host trong Ansible. (trong trường hợp này là “192.168.13.208”).

    Sau khi thực hiện task này, đầu ra sẽ chứa một đối tượng JSON với các thông tin sau:

    {
        "database_name": "tên cơ sở dữ liệu Zabbix",
        "database_username": "root",
        "database_password": "mật khẩu cơ sở dữ liệu Zabbix",
        "url": "http://192.168.13.208/zabbix"
    }

    Bạn có thể thay đổi chuỗi “http://” và “/zabbix” tùy theo nhu

    Như vậy có nhiều cách để nối chuỗi, tuy nhiên, join là phương thức phổ biến và được khuyến khích sử dụng trong Ansible.

    Bài viết gần đây

    spot_img

    Related Stories

    Leave A Reply

    Please enter your comment!
    Please enter your name here

    Đăng ký nhận thông tin bài viết qua email