--- - name: System Setup and Configuration hosts: all become: true tasks: - name: Set locale to C.UTF-8 command: localectl set-locale LANG=C.UTF-8 - name: Create APT configuration file to assume yes ansible.builtin.copy: dest: /etc/apt/apt.conf.d/90forceyes content: | APT::Get::Assume-Yes "true"; mode: '0644' - name: Append command to .bash_history ansible.builtin.blockinfile: path: "~/.bash_history" create: true block: | docker logs infernet-node -f marker: "" mode: '0644' - name: Update /etc/bash.bashrc ansible.builtin.blockinfile: path: /etc/bash.bashrc block: | export HISTTIMEFORMAT='%F, %T ' export HISTSIZE=10000 export HISTFILESIZE=10000 shopt -s histappend export PROMPT_COMMAND='history -a' export HISTCONTROL=ignoredups export LANG=C.UTF-8 export LC_ALL=C.UTF-8 alias ls='ls --color=auto' shopt -s cmdhist create: true marker: "" mode: '0644' - name: Update .inputrc for the current user ansible.builtin.blockinfile: path: "{{ ansible_env.HOME }}/.inputrc" block: | "\e[A": history-search-backward "\e[B": history-search-forward create: true marker: "" mode: '0644' - name: Update ~/.nanorc ansible.builtin.blockinfile: path: "{{ ansible_env.HOME }}/.nanorc" block: | set nohelp set tabsize 4 set tabstospaces set autoindent set positionlog set backup set backupdir /tmp/ set locking include /usr/share/nano/*.nanorc create: true marker: "" mode: '0644' - name: Set hostname ansible.builtin.hostname: name: "{{ serverid }}" - name: Ensure hostname is in /etc/hosts ansible.builtin.lineinfile: path: /etc/hosts regexp: '^127\.0\.1\.1\s+' line: "127.0.1.1 {{ serverid }}" state: present - name: Update and upgrade apt ansible.builtin.apt: update_cache: true upgrade: dist force_apt_get: true register: apt_update_result until: apt_update_result is success - name: Install necessary packages ansible.builtin.apt: name: - apt-transport-https - ca-certificates - curl - software-properties-common - make - iftop - python3 state: present - name: Install pip package web3 ansible.builtin.pip: name: web3 extra_args: --break-system-packages - name: Install Docker ansible.builtin.shell: curl -sL https://get.docker.com | sudo sh - - name: Update Docker daemon configuration for journald logging ansible.builtin.copy: dest: /etc/docker/daemon.json content: | { "log-driver": "journald" } - name: Restart Docker ansible.builtin.service: name: docker state: restarted - name: Docker login ansible.builtin.shell: docker login -u {{ docker_username }} -p {{ docker_password }} - name: Update journald log SystemMaxUse=2G configuration ansible.builtin.lineinfile: path: /etc/systemd/journald.conf regexp: '^SystemMaxUse=' line: 'SystemMaxUse=2G' state: present backup: yes validate: 'journaldctl check-config %s' - name: Restart journald ansible.builtin.service: name: systemd-journald state: restarted - name: Setup Foundry ansible.builtin.shell: | mkdir -p ~/foundry && cd ~/foundry curl -L https://foundry.paradigm.xyz | bash args: executable: /bin/bash - name: Run foundryup ansible.builtin.shell: | source ~/.bashrc && foundryup args: executable: /bin/bash - name: Clone repository ansible.builtin.git: repo: https://gitea.vvzvlad.xyz/vvzvlad/ritual.git dest: "{{ ansible_env.HOME }}/ritual" version: "{{ git_version }}" force: true async: "{{ 60 * 15 }}" poll: 30 - name: Update wallet, private key and RPC URL in project ansible.builtin.shell: bash update.sh {{ wallet }} {{ private_key }} {{ rpc_url }} args: chdir: "{{ ansible_env.HOME }}/ritual" - name: Remove old Forge and Infernet SDK ansible.builtin.shell: | rm -rf {{ ansible_env.HOME }}/ritual/projects/hello-world/contracts/lib/forge-std rm -rf {{ ansible_env.HOME }}/ritual/projects/hello-world/contracts/lib/infernet-sdk - name: Install Forge and Infernet SDK ansible.builtin.shell: | cd {{ ansible_env.HOME }}/foundry && source {{ ansible_env.HOME }}/.bashrc && foundryup cd {{ ansible_env.HOME }}/ritual/projects/hello-world/contracts forge install --no-commit foundry-rs/forge-std forge install --no-commit ritual-net/infernet-sdk args: executable: /bin/bash - name: Deploy container ansible.builtin.shell: project=hello-world make deploy-container args: chdir: "{{ ansible_env.HOME }}/ritual" - name: Deploy contracts ansible.builtin.shell: project=hello-world make deploy-contracts 2>&1 register: contract_deploy_output args: chdir: "{{ ansible_env.HOME }}/ritual" retries: 2 delay: 60 failed_when: '"ONCHAIN EXECUTION COMPLETE & SUCCESSFUL" not in contract_deploy_output.stdout' - name: Update CallContract.s.sol with contract address ansible.builtin.shell: | contract_address=$(jq -r '.transactions[0].contractAddress' projects/hello-world/contracts/broadcast/Deploy.s.sol/8453/run-latest.json) checksum_address=$(python3 toChecksumAddress.py $contract_address) sed -i "s/SaysGM(.*/SaysGM($checksum_address);/" projects/hello-world/contracts/script/CallContract.s.sol args: chdir: "{{ ansible_env.HOME }}/ritual" - name: Call contract ansible.builtin.shell: project=hello-world make call-contract 2>&1 register: contract_call_output args: chdir: "{{ ansible_env.HOME }}/ritual" retries: 2 delay: 60 failed_when: '"ONCHAIN EXECUTION COMPLETE & SUCCESSFUL" not in contract_call_output.stdout' - name: Set Docker containers to restart unless stopped ansible.builtin.shell: | docker update --restart unless-stopped hello-world docker update --restart unless-stopped infernet-node docker update --restart unless-stopped deploy-redis-1 docker update --restart unless-stopped infernet-anvil docker update --restart unless-stopped deploy-fluentbit-1 - name: Remove docker login credentials ansible.builtin.shell: rm -rf /root/.docker/config.json