Skip to content

feat(rust): run postscripts in a chroot#1792

Merged
imobachgs merged 9 commits intomasterfrom
run-chrooted-scripts
Nov 29, 2024
Merged

feat(rust): run postscripts in a chroot#1792
imobachgs merged 9 commits intomasterfrom
run-chrooted-scripts

Conversation

@imobachgs
Copy link
Contributor

@imobachgs imobachgs commented Nov 29, 2024

Problem

https://trello.com/c/I8bWv2ZR

The current scripting support does not allow using AutoYaST chroot-like scripts. For instance, if you want to enable a system service at the end of the installation, you need to deal with the chroot yourself.

Solution

This change extends the post-scripts to run on a chroot on the target system. A definition like the following will enable the sshd daemon at the end of the installation:

scripts: {
  post: [
    { name: 'test', body: '#!/bin/bash\nsystemctl enable sshd', chroot: true },
  ],
}

Now, chroot-ed postscripts are the default. Since you most likely want to run postscripts on a chroot, we are supporting chroot: false for backward compatibility reasons.

Refactoring

The PR contains a heavy refactoring of the scripts model. Now, we are using an enum-based approach that makes it easier to cope with the potential differences between script types, given that not all are equal. We followed that approach in the network area and it worked quite well.

By now, the only difference is the chroot attribute. However, in the future, we expect that prescripts and postscripts will get support for additional features, like progress reporting, that will not be available for init scripts.

Testing

  • Tested manually

@imobachgs imobachgs force-pushed the run-chrooted-scripts branch from 8c438cc to f6d7050 Compare November 29, 2024 12:18
@imobachgs imobachgs marked this pull request as ready for review November 29, 2024 12:20
@coveralls
Copy link

coveralls commented Nov 29, 2024

Pull Request Test Coverage Report for Build 12087532632

Details

  • 41 of 94 (43.62%) changed or added relevant lines in 4 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage decreased (-0.05%) to 70.981%

Changes Missing Coverage Covered Lines Changed/Added Lines %
rust/agama-lib/src/scripts/client.rs 0 1 0.0%
rust/agama-server/src/scripts/web.rs 0 2 0.0%
rust/agama-lib/src/scripts/store.rs 0 11 0.0%
rust/agama-lib/src/scripts/model.rs 41 80 51.25%
Totals Coverage Status
Change from base Build 12082384586: -0.05%
Covered Lines: 16953
Relevant Lines: 23884

💛 - Coveralls

@jreidinger
Copy link
Contributor

Overall change looks good, but I expect to see somewhere documentation for it including example of usage.

@imobachgs imobachgs merged commit dc02a50 into master Nov 29, 2024
@imobachgs imobachgs deleted the run-chrooted-scripts branch November 29, 2024 16:05
@imobachgs imobachgs mentioned this pull request Jan 10, 2025
imobachgs added a commit that referenced this pull request Jan 13, 2025
Update to release version 11.

* #1495
* #1564
* #1617
* #1618
* #1625
* #1626
* #1627
* #1628
* #1630
* #1631
* #1632
* #1633
* #1634
* #1635
* #1636
* #1639
* #1640
* #1641
* #1642
* #1643
* #1644
* #1645
* #1646
* #1647
* #1648
* #1649
* #1650
* #1651
* #1652
* #1654
* #1655
* #1656
* #1657
* #1660
* #1663
* #1666
* #1667
* #1668
* #1670
* #1671
* #1673
* #1674
* #1675
* #1676
* #1677
* #1681
* #1682
* #1683
* #1684
* #1687
* #1688
* #1689
* #1690
* #1691
* #1692
* #1693
* #1694
* #1695
* #1696
* #1698
* #1699
* #1702
* #1703
* #1704
* #1705
* #1707
* #1708
* #1709
* #1710
* #1711
* #1712
* #1713
* #1714
* #1715
* #1716
* #1717
* #1718
* #1720
* #1721
* #1722
* #1723
* #1727
* #1728
* #1729
* #1731
* #1732
* #1733
* #1734
* #1735
* #1736
* #1737
* #1740
* #1741
* #1743
* #1744
* #1745
* #1746
* #1751
* #1753
* #1754
* #1755
* #1757
* #1762
* #1763
* #1764
* #1765
* #1766
* #1767
* #1769
* #1771
* #1772
* #1773
* #1774
* #1777
* #1778
* #1785
* #1786
* #1787
* #1788
* #1789
* #1790
* #1791
* #1792
* #1793
* #1794
* #1795
* #1796
* #1797
* #1798
* #1799
* #1800
* #1802
* #1803
* #1804
* #1805
* #1807
* #1808
* #1809
* #1810
* #1811
* #1812
* #1814
* #1815
* #1821
* #1822
* #1823
* #1824
* #1825
* #1826
* #1827
* #1828
* #1830
* #1831
* #1832
* #1833
* #1834
* #1835
* #1836
* #1837
* #1838
* #1839
* #1840
* #1841
* #1842
* #1843
* #1844
* #1845
* #1847
* #1848
* #1849
* #1850
* #1851
* #1854
* #1855
* #1856
* #1857
* #1860
* #1861
* #1863
* #1864
* #1865
* #1866
* #1867
* #1871
* #1872
* #1873
* #1875
* #1876
* #1877
* #1878
* #1880
* #1881
* #1882
* #1883
* #1884
* #1885
* #1886
* #1888
* #1889
* #1890
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants